ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/NonMCBackground/src/applyEMU.cc
(Generate patch)

Comparing UserCode/MitHzz4l/NonMCBackground/src/applyEMU.cc (file contents):
Revision 1.2 by dkralph, Mon Jun 18 06:56:17 2012 UTC vs.
Revision 1.9 by dkralph, Tue Oct 23 11:24:34 2012 UTC

# Line 33 | Line 33 | using namespace std;
33   #include "Electron.h"
34   #include "Muon.h"
35   #include "Vertex.h"
36 + #include "PFJet.h"
37   #include "PFCandidate.h"
38   #include "PFCandidateCol.h"
39   #include "PileupInfoCol.h"
# Line 80 | Line 81 | using namespace mithep;
81   //
82   // globals
83   //----------------------------------------------------------------------------
84 < TH1D * hpu;
84 > TH1D *hpu_2011, *hpu_2012;
85   mithep::RunLumiRangeMap rlrm;
86   vector<SimpleLepton> failingLeptons ; // for fake estimation
87   vector<SimpleLepton> passingLeptons;      // for fake estimation
# Line 91 | Line 92 | map<unsigned,float>       evtrhoMap;
92   vector<string> cutstrs;
93   bool passes_HLT_MC;
94   vector<bool>   PFnoPUflag;;
95 + vector<int> muTrigObjs,eleTrigObjs,muTriggers,eleTriggers;
96 + std::bitset<TRIGGER_BIG_NUMBER> triggerBits;
97  
98   //
99   // prototypes
100   //----------------------------------------------------------------------------
101 < void initRunLumiRangeMap();
99 < void initPUWeights();
100 < double getPUWeight(unsigned npu);
101 > void initRunLumiRangeMap(ControlFlags &ctrl);
102  
103   //
104   // MAIN
# Line 108 | Line 109 | int main(int argc, char** argv)
109  
110    string cmsswpath(CMSSW_BASE);
111    cmsswpath.append("/src");
111  std::bitset<1024> triggerBits;
112    map<string,unsigned> entrymap; // number of unskimmed entries in each file
113  
114    //
# Line 192 | Line 192 | int main(int argc, char** argv)
192    if(ctrl.mc) {
193      nt.makeWeightBranch(weights);
194      if(ctrl.fillGen ) nt.makeGenInfoBranch(geninfo);
195 <    initEfficiencyWeights();
195 >    // initEfficiencyWeights();
196 >    cout << "\n\nWARNING: not initializing eff weights\n\n" << endl;
197      initPUWeights();
198  
199      // Higgs only, pt reweighting
# Line 206 | Line 207 | int main(int argc, char** argv)
207      }
208  
209    } else {
210 <    initRunLumiRangeMap();
210 >    initRunLumiRangeMap(ctrl);
211    }
212  
213    //  initMuonIDMVA();
# Line 216 | Line 217 | int main(int argc, char** argv)
217    initElectronIsoMVA();
218    initTrigger();
219  
220 +  muTriggers.push_back(kHLT_IsoMu24_eta2p1);    muTrigObjs.push_back(kHLT_IsoMu24_eta2p1_MuObj);
221 +  eleTriggers.push_back(kHLT_Ele27_WP80);       eleTrigObjs.push_back(kHLT_Ele27_WP80_EleObj);
222 +
223    // hack
224    initEvtRhoMap(evtrhoMap);
225  
# Line 225 | Line 229 | int main(int argc, char** argv)
229    //--------------------------------------------------------------------------------------------------------------
230    string currentFile("");
231  
232 +  UInt_t fNMaxTriggers = TRIGGER_BIG_NUMBER;
233    mithep::EventHeader *info    = new mithep::EventHeader();
234    mithep::Array<mithep::PFMet>                *metArr        = new mithep::Array<mithep::PFMet>();
235    mithep::Array<mithep::Electron>             *electronArr   = new mithep::Array<mithep::Electron>();
236    mithep::Array<mithep::Muon>                 *muonArr       = new mithep::Array<mithep::Muon>();
237    mithep::Array<mithep::Vertex>               *vtxArr        = new mithep::Array<mithep::Vertex>();
238    mithep::Array<mithep::PFCandidate>          *pfArr         = new mithep::Array<mithep::PFCandidate>();
239 +  mithep::Array<mithep::PFJet>                *jetArr        = new mithep::Array<mithep::PFJet>();
240    mithep::Array<mithep::PileupInfo>           *puArr         = new mithep::Array<mithep::PileupInfo>();
241    mithep::Array<mithep::PileupEnergyDensity>  *puDArr        = new mithep::Array<mithep::PileupEnergyDensity>();
242    mithep::Array<mithep::Track>                *trkArr        = new mithep::Array<mithep::Track>();
# Line 239 | Line 245 | int main(int argc, char** argv)
245    mithep::TriggerMask                         *trigMask      = new mithep::TriggerMask();
246    mithep::TriggerTable                        *hltTable      = new mithep::TriggerTable();
247    vector<string>                              *hltTableStrings  = new vector<string>();
248 +  vector<string>                              *hltLabelStrings  = new vector<string>();
249 +  mithep::Array<mithep::TriggerObject>        *hltObjArr     = new mithep::Array<mithep::TriggerObject>();
250 +  mithep::Array<mithep::TriggerObjectRel>     *hltRelsArr    = new mithep::Array<mithep::TriggerObjectRel>();
251 +  std::vector<std::string>                    *hltTab        = new vector<string>();
252 +  std::vector<std::string>                    *hltLab        = new vector<string>();
253 +  mithep::TriggerObjectsTable                 *fTrigObjs     = new TriggerObjectsTable(hltTable,fNMaxTriggers);
254 +  mithep::Array<mithep::DecayParticle>        *fConversions  = new mithep::Array<mithep::DecayParticle>();
255  
243  TString fElectronName(Names::gkElectronBrn);
244  TString fMuonName(Names::gkMuonBrn);
245  TString fInfoName(Names::gkEvtHeaderBrn);
246  TString fPFMetName("PFMet");
247  TString fPrimVtxName(Names::gkPVBrn);
248  TString fPFCandidateName(Names::gkPFCandidatesBrn);
249  TString fPileupInfoName(Names::gkPileupInfoBrn);
250  TString fPileupEnergyDensityName(Names::gkPileupEnergyDensityBrn);
251  TString fTrackName(Names::gkTrackBrn);
252  TString fMCParticleName(Names::gkMCPartBrn);
253  TString fMCEvtInfoName(Names::gkMCEvtInfoBrn);
254  TString fTriggerMaskName(Names::gkHltBitBrn);
256    TString fTriggerTableName(Names::gkHltTableBrn);
257 <  
258 <  chain->SetBranchAddress(fInfoName,        &info);
259 <  chain->SetBranchAddress(fPFMetName,       &metArr);
260 <  chain->SetBranchAddress(fElectronName,    &electronArr);
261 <  chain->SetBranchAddress(fMuonName,        &muonArr);
262 <  chain->SetBranchAddress(fPrimVtxName,     &vtxArr);
263 <  chain->SetBranchAddress(fPFCandidateName, &pfArr);
257 >  chain->SetBranchAddress(Names::gkEvtHeaderBrn,                &info);
258 >  chain->SetBranchAddress("PFMet",                              &metArr);
259 >  chain->SetBranchAddress(Names::gkElectronBrn,                 &electronArr);
260 >  chain->SetBranchAddress(Names::gkMuonBrn,                     &muonArr);
261 >  chain->SetBranchAddress(Names::gkPVBrn,                       &vtxArr);
262 >  chain->SetBranchAddress(Names::gkPFCandidatesBrn,             &pfArr);
263 >  chain->SetBranchAddress(Names::gkPFJetBrn,                    &jetArr);
264    if( ctrl.mc ) {
265 <    chain->SetBranchAddress(fPileupInfoName,  &puArr);
266 <    chain->SetBranchAddress(fMCParticleName,  &mcArr);
267 <    chain->SetBranchAddress(fMCEvtInfoName,  &mcEvtInfo);
265 >    chain->SetBranchAddress(Names::gkPileupInfoBrn,             &puArr);
266 >    chain->SetBranchAddress(Names::gkMCPartBrn,                 &mcArr);
267 >    chain->SetBranchAddress(Names::gkMCEvtInfoBrn,              &mcEvtInfo);
268    }
269 <  chain->SetBranchAddress(fPileupEnergyDensityName, &puDArr);
270 <  chain->SetBranchAddress(fTrackName, &trkArr);
271 <  chain->SetBranchAddress(fTriggerMaskName, &trigMask);
272 <  cout << "hlttable: " << fTriggerTableName << endl;
273 <  hltchain->SetBranchAddress(fTriggerTableName, &hltTableStrings);
269 >  chain->SetBranchAddress(Names::gkPileupEnergyDensityBrn,      &puDArr);
270 >  chain->SetBranchAddress(Names::gkTrackBrn,                    &trkArr);
271 >  chain->SetBranchAddress(Names::gkHltBitBrn,                   &trigMask);
272 >  chain->SetBranchAddress(Names::gkHltObjBrn,                   &hltObjArr);
273 >  chain->SetBranchAddress("HLTObjectsRelation",                 &hltRelsArr);
274 >  chain->SetBranchAddress(Names::gkMvfConversionBrn,            &fConversions);
275 >  hltchain->SetBranchAddress(fTriggerTableName,                 &hltTableStrings);
276 >  hltchain->SetBranchAddress(Names::gkHltLabelBrn,              &hltLabelStrings);
277  
278    mithep::Vertex              vtx;          // best primary vertex in the event
279  
# Line 293 | Line 297 | int main(int argc, char** argv)
297      string fname = string(chain->GetFile()->GetEndpointUrl()->GetFile());
298      setEra( fname, ctrl );
299  
296
300      // pfNoPU
301      PFnoPUflag.clear();
302      int pfnopu_size = makePFnoPUArray( pfArr, PFnoPUflag, vtxArr );
# Line 308 | Line 311 | int main(int argc, char** argv)
311        fillTriggerNames(hltTable, hltTableStrings );
312      }
313      fillTriggerBits( hltTable, trigMask, triggerBits );
314 +    setHLTObjectRelations( hltObjArr, hltRelsArr, hltTableStrings, hltLabelStrings, fTrigObjs );
315  
316      //
317      // data/MC
# Line 316 | Line 320 | int main(int argc, char** argv)
320        if( ctrl.fillGen )
321          fillGenInfo( mcArr, mcEvtInfo, geninfo, ESampleType::kHZZ, ctrl);
322      } else {
319      /*
320      // JSON
323        if(!(ctrl.noJSON) ) {
324 <      RunLumiRangeMap::RunLumiPairType rl(info->RunNum(), info->LumiSec());      
325 <      if( !(rlrm.HasRunLumi(rl)) )  {
324 <      if( ctrl.debug ) cout << "\tfails JSON" << endl;
325 <      continue;
326 <      }
324 >        RunLumiRangeMap::RunLumiPairType rl(info->RunNum(), info->LumiSec());      
325 >        if( !(rlrm.HasRunLumi(rl)) ) continue;
326        }
328      */
327        // if( !passHLTEMU(ctrl,triggerBits) ) {
328        //   continue;
329        // }
# Line 334 | Line 332 | int main(int argc, char** argv)
332      // lepton/kinematic selection ...
333      failingLeptons.clear();
334      passingLeptons.clear();
335 <    EventData ret4l =
335 >    EventData ret4l;
336          
337 <      apply_HZZ4L_EMU_selection(ctrl, info,
338 <                                vtxArr,
339 <                                pfArr,
340 <                                puDArr,
341 <                                electronArr,
342 <                                &electronReferencePreSelection,
343 <                                &electronReferenceIDMVASelectionV1,
344 <                                &electronReferenceIsoSelection,
345 <                                muonArr,
346 <                                &muonReferencePreSelection,
347 <                                &muonIDPFSelection,
348 <                                &muonReferenceIsoSelection);
349 <      
337 >      ret4l = apply_HZZ4L_EMU_selection(ctrl, info,
338 >                                        hltTable,
339 >                                        hltObjArr,
340 >                                        fTrigObjs,
341 >                                        vtxArr,
342 >                                        pfArr,
343 >                                        puDArr,
344 >                                        fConversions,
345 >                                        electronArr,
346 >                                        &electronReferencePreSelection,
347 >                                        &electronReferenceIDMVASelectionV1,
348 >                                        &electronReferenceIsoSelection,
349 >                                        muonArr,
350 >                                        &muonReferencePreSelection,
351 >                                        &muonIDPFSelection,
352 >                                        &muonReferenceIsoSelection);
353        
354      if( ret4l.status.pass() ) {
355 <        
355 >      fillKinematics(ret4l,kinematics);
356        TLorentzVector pfmet; pfmet.SetPxPyPzE(metArr->At(0)->Mex(),metArr->At(0)->Mey(),0,0);
357 <      fillEventInfo(info,pfmet,evtinfo);
357 >      fillEventInfo( info, pfmet, evtinfo, ctrl.mc ? getNPU(puArr) : 0, vtxArr->GetEntries());
358        foTree.Fill();
358        
359      if( ctrl.mc)
360        setEffiencyWeights(ret4l, weights);
361        
359        nt.Fill();
360      }
361 <      
361 >    
362    }
363    foTree.getFile()->cd();
364    foTree.getTree()->Write();
365    nt.WriteClose();
366   }
367   //----------------------------------------------------------------------------
368 < void initRunLumiRangeMap()
368 > void initRunLumiRangeMap(ControlFlags &ctrl)
369   //----------------------------------------------------------------------------
370   {
371    /*
# Line 382 | Line 379 | void initRunLumiRangeMap()
379    */
380  
381    // 2012 only for now ...
382 <  rlrm.AddJSONFile(std::string("./data/Cert_190456-194479_8TeV_PromptReco_Collisions12_JSON.txt"));  
382 >  rlrm.AddJSONFile(string(ctrl.jsonFile));
383  
384   };
388
389
390 //----------------------------------------------------------------------------
391 void initPUWeights()
392 //----------------------------------------------------------------------------
393 {
394  TFile * puf = new TFile("data/PileupReweighting.Summer11DYmm_To_Full2011.root");
395  hpu = (TH1D*)(puf->Get("puWeights"));
396 }
397
398 //----------------------------------------------------------------------------
399 double getPUWeight(unsigned npu)
400 //----------------------------------------------------------------------------
401 {
402  return hpu->GetBinContent(hpu->FindBin(npu));
403 }
404

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines