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.1 by dkralph, Tue Jun 12 23:07:36 2012 UTC vs.
Revision 1.5 by dkralph, Mon Jun 25 18:08:04 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  vector<vector<string> > inputFiles;
113  inputFiles.push_back(vector<string>());
112    map<string,unsigned> entrymap; // number of unskimmed entries in each file
113  
114    //
# Line 194 | 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 208 | Line 207 | int main(int argc, char** argv)
207      }
208  
209    } else {
210 <    initRunLumiRangeMap();
210 >    initRunLumiRangeMap(ctrl);
211    }
212  
213    //  initMuonIDMVA();
# Line 218 | 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 227 | int main(int argc, char** argv)
227    //
228    // Setup tree I/O
229    //--------------------------------------------------------------------------------------------------------------
228  TFile *inputFile=0;
229  TTree *eventTree=0;  
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 243 | 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  
247  TString fElectronName(Names::gkElectronBrn);
248  TString fMuonName(Names::gkMuonBrn);
249  TString fInfoName(Names::gkEvtHeaderBrn);
250  TString fPFMetName("PFMet");
251  TString fPrimVtxName(Names::gkPVBrn);
252  TString fPFCandidateName(Names::gkPFCandidatesBrn);
253  TString fPileupInfoName(Names::gkPileupInfoBrn);
254  TString fPileupEnergyDensityName(Names::gkPileupEnergyDensityBrn);
255  TString fTrackName(Names::gkTrackBrn);
256  TString fMCParticleName(Names::gkMCPartBrn);
257  TString fMCEvtInfoName(Names::gkMCEvtInfoBrn);
258  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 312 | Line 312 | int main(int argc, char** argv)
312        fillTriggerNames(hltTable, hltTableStrings );
313      }
314      fillTriggerBits( hltTable, trigMask, triggerBits );
315 +    setHLTObjectRelations( hltObjArr, hltRelsArr, hltTableStrings, hltLabelStrings, fTrigObjs );
316  
317      //
318      // data/MC
# Line 320 | Line 321 | int main(int argc, char** argv)
321        if( ctrl.fillGen )
322          fillGenInfo( mcArr, mcEvtInfo, geninfo, ESampleType::kHZZ, ctrl);
323      } else {
323      /*
324      // JSON
324        if(!(ctrl.noJSON) ) {
325 <      RunLumiRangeMap::RunLumiPairType rl(info->RunNum(), info->LumiSec());      
326 <      if( !(rlrm.HasRunLumi(rl)) )  {
328 <      if( ctrl.debug ) cout << "\tfails JSON" << endl;
329 <      continue;
330 <      }
325 >        RunLumiRangeMap::RunLumiPairType rl(info->RunNum(), info->LumiSec());      
326 >        if( !(rlrm.HasRunLumi(rl)) ) continue;
327        }
332      */
328        // if( !passHLTEMU(ctrl,triggerBits) ) {
329        //   continue;
330        // }
# Line 340 | Line 335 | int main(int argc, char** argv)
335      passingLeptons.clear();
336      EventData ret4l =
337          
338 <      apply_HZZ4L_EMU_selection(ctrl, info,
338 >      apply_HZZ4L_EMU_selection(ctrl, info,
339 >                                hltTable,
340 >                                hltObjArr,
341 >                                fTrigObjs,
342                                  vtxArr,
343                                  pfArr,
344                                  puDArr,
# Line 357 | Line 355 | int main(int argc, char** argv)
355      if( ret4l.status.pass() ) {
356          
357        TLorentzVector pfmet; pfmet.SetPxPyPzE(metArr->At(0)->Mex(),metArr->At(0)->Mey(),0,0);
358 <      fillEventInfo(info,pfmet,evtinfo);
358 >      fillEventInfo( info, pfmet, evtinfo, ctrl.mc ? getNPU(puArr) : 0, vtxArr->GetEntries());
359        foTree.Fill();
360          
361 <      if( ctrl.mc)
362 <        setEffiencyWeights(ret4l, weights);
361 >      // if( ctrl.mc)
362 >      //        setEffiencyWeights(ctrl.era, ret4l, weights);
363 >      if(ientry<10000) cout << "\n\nWARNING: not setting eff weights\n\n" << endl;
364          
365        nt.Fill();
366      }
# Line 372 | Line 371 | int main(int argc, char** argv)
371    nt.WriteClose();
372   }
373   //----------------------------------------------------------------------------
374 < void initRunLumiRangeMap()
374 > void initRunLumiRangeMap(ControlFlags &ctrl)
375   //----------------------------------------------------------------------------
376   {
377    /*
# Line 386 | Line 385 | void initRunLumiRangeMap()
385    */
386  
387    // 2012 only for now ...
388 <  rlrm.AddJSONFile(std::string("./data/Cert_190456-194479_8TeV_PromptReco_Collisions12_JSON.txt"));  
388 >  rlrm.AddJSONFile(string(ctrl.jsonFile));
389  
390   };
392
393
394 //----------------------------------------------------------------------------
395 void initPUWeights()
396 //----------------------------------------------------------------------------
397 {
398  TFile * puf = new TFile("data/PileupReweighting.Summer11DYmm_To_Full2011.root");
399  hpu = (TH1D*)(puf->Get("puWeights"));
400 }
401
402 //----------------------------------------------------------------------------
403 double getPUWeight(unsigned npu)
404 //----------------------------------------------------------------------------
405 {
406  return hpu->GetBinContent(hpu->FindBin(npu));
407 }
408

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines