5 name_ =
"HLTTauDQMLitePathPlotter";
24 edm::LogInfo(
"HLTTauDQMLitePathPlotter::HLTTauDQMLitePathPlotter") << e.
what() << std::endl;
29 for ( std::vector<edm::ParameterSet>::const_iterator iter =
filters_.begin(); iter !=
filters_.end(); ++iter ) {
100 std::vector<bool> isGoodReferenceEvent;
102 LV highestRefTau(0.,0.,0.,0.0001);
103 LVColl triggeredTaus, refTaus, refElectrons, refMuons;
105 std::map<int,LVColl>::const_iterator iref;
108 iref = refC.find(15);
109 if ( iref != refC.end() ) {
110 for ( LVColl::const_iterator lvi = iref->second.begin(); lvi != iref->second.end(); ++lvi ) {
111 if ( lvi->Et() > highestRefTau.pt() ) {
112 highestRefTau = *lvi;
119 unsigned int highPtTaus = 0;
120 unsigned int highPtElectrons = 0;
121 unsigned int highPtMuons = 0;
123 std::map<int,LVColl>::const_iterator iref;
126 iref = refC.find(15);
127 if ( iref != refC.end() ) {
128 for ( LVColl::const_iterator lvi = iref->second.begin(); lvi != iref->second.end(); ++lvi ) {
132 refTaus.push_back(*lvi);
136 iref = refC.find(11);
137 if ( iref != refC.end() ) {
138 for ( LVColl::const_iterator lvi = iref->second.begin(); lvi != iref->second.end(); ++lvi ) {
142 refElectrons.push_back(*lvi);
146 iref = refC.find(13);
147 if ( iref != refC.end() ) {
148 for ( LVColl::const_iterator lvi = iref->second.begin(); lvi != iref->second.end(); ++lvi ) {
152 refMuons.push_back(*lvi);
158 bool leptons_ok =
true;
160 if ( highPtTaus <
filterObjs_[
i].getNTriggeredTaus() ) tau_ok =
false;
161 if (
filterObjs_[
i].leptonId() == 11 && highPtElectrons <
filterObjs_[
i].getNTriggeredLeptons() ) leptons_ok =
false;
164 if ( tau_ok && leptons_ok ) {
166 isGoodReferenceEvent.push_back(
true);
168 isGoodReferenceEvent.push_back(
false);
182 if ( ID != trigEv->sizeFilters() ) {
188 triggeredTaus = taus;
192 if ( leptons.size() >=
filterObjs_[
i].getNTriggeredLeptons() && taus.size() >=
filterObjs_[
i].getNTriggeredTaus() ) {
197 if ( isGoodReferenceEvent.at(
i) ) {
199 for (
size_t j = 0;
j < taus.size(); ++
j ) {
203 for (
size_t j = 0;
j < leptons.size(); ++
j ) {
209 if (
filterObjs_[
i].getNTriggeredTaus() >= 2 && refTaus.size() >= 2 ) {
210 if (thisMassDist !=
mass_distribution.end()) thisMassDist->second->Fill( (refTaus[0]+refTaus[1]).M() );
212 if (
filterObjs_[
i].leptonId() == 11 && refElectrons.size() >= 1 ) {
213 if (thisMassDist !=
mass_distribution.end()) thisMassDist->second->Fill( (refTaus[0]+refElectrons[0]).M() );
215 if (
filterObjs_[
i].leptonId() == 13 && refMuons.size() >= 1 ) {
216 if (thisMassDist !=
mass_distribution.end()) thisMassDist->second->Fill( (refTaus[0]+refMuons[0]).M() );
223 if (thisMassDist !=
mass_distribution.end()) thisMassDist->second->Fill( (taus[0]+taus[1]).M() );
225 if (thisMassDist !=
mass_distribution.end()) thisMassDist->second->Fill( (taus[0]+leptons[0]).M() );
233 if ( triggeredTaus.size() > 0 ) {
234 LV highestTriggeredTau(0.,0.,0.,0.0001);
235 for (
unsigned int i = 0;
i < triggeredTaus.size(); ++
i ) {
236 if ( triggeredTaus[
i].pt() > highestTriggeredTau.pt() ) {
237 highestTriggeredTau = triggeredTaus[
i];
250 if ( ROOT::Math::VectorUtil::DeltaR(highestRefTau,highestTriggeredTau) <
matchDeltaR_ ) {
265 for (
unsigned int i = 0;
i < triggerObjects.size(); ++
i ) {
266 if (
abs(triggerObjects[
i].
id()) == id ) {
267 LV a(triggerObjects[
i].px(),triggerObjects[
i].py(),triggerObjects[
i].pz(),triggerObjects[
i].
energy());
283 for (
size_t i = 0;
i < KEYS.size(); ++
i ) {
virtual char const * what() const
T getUntrackedParameter(std::string const &, T const &) const
The single EDProduct to be saved for each event (AOD case)
trigger::size_type sizeFilters() const
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
const Keys & filterKeys(trigger::size_type index) const
MonitorElement * accepted_events
edm::InputTag triggerEvent_
InputTag of TriggerEventWithRefs to analyze.
HLTTauDQMLitePathPlotter(const edm::ParameterSet &, int, int, int, double, bool, double, std::string)
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
std::vector< edm::ParameterSet > filters_
LVColl getObjectCollection(int, const trigger::TriggerEvent &)
Single trigger physics object (e.g., an isolated muon)
MonitorElement * tauEtaEffNum
math::XYZTLorentzVectorD LV
MonitorElement * tauPhiEffDenom
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
std::vector< HLTTauDQMPlotter::FilterObject > filterObjs_
void analyze(const edm::Event &, const edm::EventSetup &, const std::map< int, LVColl > &)
const TriggerObjectCollection & getObjects() const
MonitorElement * tauEtEffDenom
std::string triggerTagAlias_
std::map< std::string, MonitorElement * > mass_distribution
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * accepted_events_matched
MonitorElement * ref_events
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
std::vector< size_type > Keys
TH1F * getTH1F(void) const
std::vector< std::vector< double > > tmp
MonitorElement * tauEtaEffDenom
std::pair< bool, LV > match(const LV &, const LVColl &, double)
LVColl getFilterCollection(size_t, int, const trigger::TriggerEvent &)
MonitorElement * tauPhiEffNum
MonitorElement * tauEtEffNum
~HLTTauDQMLitePathPlotter()
void setCurrentFolder(const std::string &fullpath)
std::string dqmBaseFolder_