30 for ( std::vector<std::string>::iterator iParam = parameterNames.begin();
31 iParam != parameterNames.end(); iParam++ ){
38 const int kMaxRecoPFJet = 10000;
49 const int kMaxJetCal = 10000;
50 jcalpt =
new float[kMaxJetCal];
51 jcalphi =
new float[kMaxJetCal];
52 jcaleta =
new float[kMaxJetCal];
53 jcale =
new float[kMaxJetCal];
54 jcalemf =
new float[kMaxJetCal];
55 jcaln90 =
new float[kMaxJetCal];
64 const int kMaxJetgen = 10000;
65 jgenpt =
new float[kMaxJetgen];
66 jgenphi =
new float[kMaxJetgen];
67 jgeneta =
new float[kMaxJetgen];
68 jgene =
new float[kMaxJetgen];
69 const int kMaxTower = 10000;
70 towet =
new float[kMaxTower];
71 toweta =
new float[kMaxTower];
72 towphi =
new float[kMaxTower];
73 towen =
new float[kMaxTower];
74 towem =
new float[kMaxTower];
75 towhd =
new float[kMaxTower];
76 towoe =
new float[kMaxTower];
77 const int kMaxTau = 500;
81 tauEta =
new float[kMaxTau];
82 tauPt =
new float[kMaxTau];
83 tauPhi =
new float[kMaxTau];
85 const int kMaxPFTau = 500;
112 const int kMaxPFJet = 500;
115 pfJetPt =
new float[kMaxPFJet];
118 HltTree->Branch(
"NrecoJetCal",&
njetcal,
"NrecoJetCal/I");
119 HltTree->Branch(
"NrecoJetGen",&
njetgen,
"NrecoJetGen/I");
120 HltTree->Branch(
"NrecoTowCal",&
ntowcal,
"NrecoTowCal/I");
121 HltTree->Branch(
"recoJetCalPt",
jcalpt,
"recoJetCalPt[NrecoJetCal]/F");
122 HltTree->Branch(
"recoJetCalPhi",
jcalphi,
"recoJetCalPhi[NrecoJetCal]/F");
123 HltTree->Branch(
"recoJetCalEta",
jcaleta,
"recoJetCalEta[NrecoJetCal]/F");
124 HltTree->Branch(
"recoJetCalE",
jcale,
"recoJetCalE[NrecoJetCal]/F");
125 HltTree->Branch(
"recoJetCalEMF",
jcalemf,
"recoJetCalEMF[NrecoJetCal]/F");
126 HltTree->Branch(
"recoJetCalN90",
jcaln90,
"recoJetCalN90[NrecoJetCal]/F");
128 HltTree->Branch(
"recoJetGenPt",
jgenpt,
"recoJetGenPt[NrecoJetGen]/F");
129 HltTree->Branch(
"recoJetGenPhi",
jgenphi,
"recoJetGenPhi[NrecoJetGen]/F");
130 HltTree->Branch(
"recoJetGenEta",
jgeneta,
"recoJetGenEta[NrecoJetGen]/F");
131 HltTree->Branch(
"recoJetGenE",
jgene,
"recoJetGenE[NrecoJetGen]/F");
132 HltTree->Branch(
"recoTowEt",
towet,
"recoTowEt[NrecoTowCal]/F");
133 HltTree->Branch(
"recoTowEta",
toweta,
"recoTowEta[NrecoTowCal]/F");
134 HltTree->Branch(
"recoTowPhi",
towphi,
"recoTowPhi[NrecoTowCal]/F");
135 HltTree->Branch(
"recoTowE",
towen,
"recoTowE[NrecoTowCal]/F");
136 HltTree->Branch(
"recoTowEm",
towem,
"recoTowEm[NrecoTowCal]/F");
137 HltTree->Branch(
"recoTowHad",
towhd,
"recoTowHad[NrecoTowCal]/F");
138 HltTree->Branch(
"recoTowOE",
towoe,
"recoTowOE[NrecoTowCal]/F");
139 HltTree->Branch(
"recoMetCal",&
mcalmet,
"recoMetCal/F");
140 HltTree->Branch(
"recoMetCalPhi",&
mcalphi,
"recoMetCalPhi/F");
141 HltTree->Branch(
"recoMetCalSum",&
mcalsum,
"recoMetCalSum/F");
142 HltTree->Branch(
"recoMetGen",&
mgenmet,
"recoMetGen/F");
143 HltTree->Branch(
"recoMetGenPhi",&
mgenphi,
"recoMetGenPhi/F");
144 HltTree->Branch(
"recoMetGenSum",&
mgensum,
"recoMetGenSum/F");
145 HltTree->Branch(
"recoHTCal",&
htcalet,
"recoHTCal/F");
146 HltTree->Branch(
"recoHTCalPhi",&
htcalphi,
"recoHTCalPhi/F");
147 HltTree->Branch(
"recoHTCalSum",&
htcalsum,
"recoHTCalSum/F");
150 HltTree->Branch(
"NrecoJetCorCal",&
ncorjetcal,
"NrecoJetCorCal/I");
151 HltTree->Branch(
"recoJetCorCalPt",
jcorcalpt,
"recoJetCorCalPt[NrecoJetCorCal]/F");
152 HltTree->Branch(
"recoJetCorCalPhi",
jcorcalphi,
"recoJetCorCalPhi[NrecoJetCorCal]/F");
153 HltTree->Branch(
"recoJetCorCalEta",
jcorcaleta,
"recoJetCorCalEta[NrecoJetCorCal]/F");
154 HltTree->Branch(
"recoJetCorCalE",
jcorcale,
"recoJetCorCalE[NrecoJetCorCal]/F");
155 HltTree->Branch(
"recoJetCorCalEMF",
jcorcalemf,
"recoJetCorCalEMF[NrecoJetCorCal]/F");
156 HltTree->Branch(
"recoJetCorCalN90",
jcorcaln90,
"recoJetCorCalN90[NrecoJetCorCal]/F");
159 HltTree->Branch(
"NohTau",&
nohtau,
"NohTau/I");
160 HltTree->Branch(
"ohTauEta",
tauEta,
"ohTauEta[NohTau]/F");
161 HltTree->Branch(
"ohTauPhi",
tauPhi,
"ohTauPhi[NohTau]/F");
162 HltTree->Branch(
"ohTauPt",
tauPt,
"ohTauPt[NohTau]/F");
163 HltTree->Branch(
"ohTauEiso",
l2tauemiso,
"ohTauEiso[NohTau]/F");
164 HltTree->Branch(
"ohTauL25Tpt",
l25tauPt,
"ohTauL25Tpt[NohTau]/F");
165 HltTree->Branch(
"ohTauL3Tiso",
l3tautckiso,
"ohTauL3Tiso[NohTau]/I");
168 HltTree->Branch(
"NohpfTau",&
nohPFTau,
"NohpfTau/I");
169 HltTree->Branch(
"ohpfTauPt",
ohpfTauPt,
"ohpfTauPt[NohpfTau]/F");
170 HltTree->Branch(
"ohpfTauEta",
ohpfTauEta,
"ohpfTauEta[NohpfTau]/F");
171 HltTree->Branch(
"ohpfTauPhi",
ohpfTauPhi,
"ohpfTauPhi[NohpfTau]/F");
172 HltTree->Branch(
"ohpfTauLeadTrackPt",
ohpfTauLeadTrackPt,
"ohpfTauLeadTrackPt[NohpfTau]/F");
173 HltTree->Branch(
"ohpfTauLeadPionPt",
ohpfTauLeadPionPt,
"ohpfTauLeadPionPt[NohpfTau]/F");
174 HltTree->Branch(
"ohpfTauTrkIso",
ohpfTauTrkIso,
"ohpfTauTrkIso[NohpfTau]/F");
175 HltTree->Branch(
"ohpfTauGammaIso",
ohpfTauGammaIso,
"ohpfTauGammaIso[NohpfTau]/F");
176 HltTree->Branch(
"ohpfTauJetPt",
ohpfTauJetPt,
"ohpfTauJetPt[NohpfTau]/F");
180 HltTree->Branch(
"NRecoPFTau",&
nRecoPFTau,
"NRecoPFTau/I");
181 HltTree->Branch(
"recopfTauPt",
recopfTauPt,
"recopfTauPt[NRecoPFTau]/F");
182 HltTree->Branch(
"recopfTauEta",
recopfTauEta,
"recopfTauEta[NRecoPFTau]/F");
183 HltTree->Branch(
"recopfTauPhi",
recopfTauPhi,
"recopfTauPhi[NRecoPFTau]/F");
184 HltTree->Branch(
"recopfTauLeadTrackPt",
recopfTauLeadTrackPt,
"recopfTauLeadTrackPt[NRecoPFTau]/F");
185 HltTree->Branch(
"recopfTauLeadPionPt",
recopfTauLeadPionPt,
"recopfTauLeadPionPt[NRecoPFTau]/F");
186 HltTree->Branch(
"recopfTauTrkIso",
recopfTauTrkIso,
"recopfTauTrkIso[NRecoPFTau]/I");
187 HltTree->Branch(
"recopfTauGammaIso",
recopfTauGammaIso,
"recopfTauGammaIso[NRecoPFTau]/I");
188 HltTree->Branch(
"recopfTauJetPt",
recopfTauJetPt,
"recopfTauJetPt[NRecoPFTau]/F");
193 HltTree->Branch(
"recopfTauDiscrByIso",
recopfTauDiscrByIso,
"recopfTauDiscrByIso[NRecoPFTau]/F");
198 HltTree->Branch(
"pfMHT",&
pfMHT,
"pfMHT/F");
199 HltTree->Branch(
"NohPFJet",&
nohPFJet,
"NohPFJet/I");
200 HltTree->Branch(
"pfJetPt",
pfJetPt,
"pfJetPt[NohPFJet]/F");
201 HltTree->Branch(
"pfJetEta",
pfJetEta,
"pfJetEta[NohPFJet]/F");
202 HltTree->Branch(
"pfJetPhi",
pfJetPhi,
"pfJetPhi[NohPFJet]/F");
205 HltTree->Branch(
"nrpj",&
nrpj,
"nrpj/I");
206 HltTree->Branch(
"recopfJetpt",
jpfrecopt,
"recopfJetpt[nrpj]/F");
207 HltTree->Branch(
"recopfJetphi",
jpfrecophi,
"recopfJetphi[nrpj]/F");
208 HltTree->Branch(
"recopfJeteta",
jpfrecoeta,
"recopfJeteta[nrpj]/F");
238 double thresholdForSavingTowers,
253 mycalojets=*calojets;
255 typedef reco::CaloJetCollection::const_iterator cjiter;
257 for ( cjiter
i=mycalojets.begin();
i!=mycalojets.end();
i++) {
263 jcale[jcal] =
i->energy();
264 jcalemf[jcal] =
i->emEnergyFraction();
276 mycalocorjets=*calocorjets;
278 typedef reco::CaloJetCollection::const_iterator ccorjiter;
280 for ( ccorjiter
i=mycalocorjets.begin();
i!=mycalocorjets.end();
i++) {
301 if(tower->energy() > thresholdForSavingTowers)
303 towet[jtow] = tower->et();
304 toweta[jtow] = tower->eta();
305 towphi[jtow] = tower->phi();
306 towen[jtow] = tower->energy();
307 towem[jtow] = tower->emEnergy();
308 towhd[jtow] = tower->hadEnergy();
309 towoe[jtow] = tower->outerEnergy();
318 typedef reco::CaloMETCollection::const_iterator cmiter;
319 for ( cmiter
i=recmets->begin();
i!=recmets->end();
i++) {
327 typedef reco::METCollection::const_iterator iter;
328 for ( iter
i=ht->begin();
i!=ht->end();
i++) {
341 typedef reco::GenJetCollection::const_iterator gjiter;
343 for ( gjiter
i=mygenjets.begin();
i!=mygenjets.end();
i++) {
349 jgene[jgen] =
i->energy();
359 typedef reco::GenMETCollection::const_iterator gmiter;
360 for ( gmiter
i=genmets->begin();
i!=genmets->end();
i++) {
377 typedef reco::HLTTauCollection::const_iterator tauit;
379 for(tauit
i=mytaujets.begin();
i!=mytaujets.end();
i++){
387 l25tauPt[itau] =
i->getL25LeadTrackPtValue();
404 typedef reco::PFTauCollection::const_iterator pftauit;
408 for(pftauit
i=taus.begin();
i!=taus.end();
i++){
413 ohpfTauJetPt[ipftau] =
i->pfTauTagInfoRef()->pfjetRef()->pt();
415 pfMHTx = pfMHTx +
i->pfTauTagInfoRef()->pfjetRef()->px();
416 pfMHTy = pfMHTy +
i->pfTauTagInfoRef()->pfjetRef()->py();
422 if( (
i->leadPFNeutralCand()).isNonnull())
424 if((
i->leadPFChargedHadrCand()).isNonnull())
426 float maxPtTrkIso = 0;
427 for (
unsigned int iTrk = 0; iTrk <
i->isolationPFChargedHadrCands().size(); iTrk++)
429 if(
i->isolationPFChargedHadrCands()[iTrk]->pt() > maxPtTrkIso) maxPtTrkIso =
i->isolationPFChargedHadrCands()[iTrk]->pt();
433 float maxPtGammaIso = 0;
434 for (
unsigned int iGamma = 0; iGamma <
i->isolationPFGammaCands().size(); iGamma++)
436 if(
i->isolationPFGammaCands()[iGamma]->pt() > maxPtGammaIso) maxPtGammaIso =
i->isolationPFGammaCands()[iGamma]->pt();
441 pfMHT =
sqrt(pfMHTx*pfMHTx + pfMHTy*pfMHTy);
448 float minTrkPt = minPtCH;
449 float minGammaPt = minPtGamma;
453 typedef reco::PFTauCollection::const_iterator pftauit;
456 for(pftauit
i=taus.begin();
i!=taus.end();
i++){
463 if( (
i->leadPFNeutralCand()).isNonnull())
465 if((
i->leadPFChargedHadrCand()).isNonnull())
468 for (
unsigned int iTrk = 0; iTrk <
i->isolationPFChargedHadrCands().size(); iTrk++)
470 if(
i->isolationPFChargedHadrCands()[iTrk]->pt() > minTrkPt) myTrks++;
475 for (
unsigned int iGamma = 0; iGamma <
i->isolationPFGammaCands().size(); iGamma++)
477 if(
i->isolationPFGammaCands()[iGamma]->pt() > minGammaPt) myGammas++;
483 if(theRecoPFTauDiscrByTanCOnePercent.
isValid()){
485 if(theRecoPFTauDiscrByIsolation.
isValid()){
487 if(theRecoPFTauDiscrAgainstMuon.
isValid()){
489 if(theRecoPFTauDiscrAgainstElec.
isValid()){
491 if(theRecoPFTauDiscrByTanCHalfPercent.
isValid()){
493 if(theRecoPFTauDiscrByTanCQuarterPercent.
isValid()){
495 if(theRecoPFTauDiscrByTanCTenthPercent.
isValid()){
507 typedef reco::PFJetCollection::const_iterator pfJetit;
511 for(pfJetit
i=Jets.begin();
i!=Jets.end();
i++){
517 pfMHTx = pfMHTx +
i->px();
518 pfMHTy = pfMHTy +
i->py();
521 pfMHT =
sqrt(pfMHTx*pfMHTx + pfMHTy*pfMHTy);
528 nrpj = recoPFJets->size();
531 typedef reco::PFJetCollection::const_iterator pfJetit;
533 for(pfJetit
i=Jets.begin();
i!=Jets.end();
i++){
T getParameter(std::string const &) const
float * recopfTauDiscrAgainstElec
std::vector< PFTau > PFTauCollection
collection of PFTau objects
int * jpfrecochargedMultiplicity
float * ohpfTauLeadTrackPt
float * recopfTauDiscrByTancQuarterPercent
std::vector< GenJet > GenJetCollection
collection of GenJet objects
float * jpfrecochargedHadronFraction
std::vector< CaloTower >::const_iterator const_iterator
float * recopfTauDiscrByIso
float * recopfTauLeadTrackPt
float * recopfTauDiscrByTancHalfPercent
float * jpfreconeutralHadronFraction
float * recopfTauLeadPionPt
float * recopfTauDiscrAgainstMuon
std::vector< HLTTau > HLTTauCollection
collection of HLTTau objects
std::vector< std::string > getParameterNames() const
float * recopfTauDiscrByTancOnePercent
float * ohpfTauLeadPionPt
float * jpfreconeutralEMFraction
int * jpfreconeutralMultiplicity
void setup(const edm::ParameterSet &pSet, TTree *tree)
std::vector< PFJet > PFJetCollection
collection of PFJet objects
void analyze(const edm::Handle< reco::CaloJetCollection > &recojets, const edm::Handle< reco::CaloJetCollection > &corjets, const edm::Handle< reco::GenJetCollection > &gjets, const edm::Handle< reco::CaloMETCollection > &rmets, const edm::Handle< reco::GenMETCollection > &gmets, const edm::Handle< reco::METCollection > &ht, const edm::Handle< reco::HLTTauCollection > &myHLTTau, const edm::Handle< reco::PFTauCollection > &myHLTPFTau, const edm::Handle< reco::PFJetCollection > &myHLTPFJets, const edm::Handle< reco::PFTauCollection > &myRecoPFTau, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCOnePercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCHalfPercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCQuarterPercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCTenthPercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByIsolation, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrAgainstElec, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrAgainstMuon, const edm::Handle< reco::PFJetCollection > &recoPFJets, const edm::Handle< CaloTowerCollection > &caloTowers, double thresholdForSavingTowers, double minPtCH, double minPtGamma, TTree *tree)
float * jpfrecochargedEMFraction
float * recopfTauDiscrByTancTenthPercent
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects