DESY Hbb Analysis Framework
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
analysis::tools::Analysis Class Reference

#include <Analysis.h>

Public Member Functions

void addBtagEfficiencies (const std::string &)
 
template<class Object >
std::shared_ptr< Collection< Object > > addCollection (const std::string &unique_name)
 
template<class Object >
std::shared_ptr< Collection< Object > > addCollection (const Collection< Object > &collection)
 
template<class Object >
std::shared_ptr< Collection< Object > > addCollection (const std::vector< Object > &objects, const std::string &unique_name)
 
template<class Object >
std::shared_ptr< PhysicsObjectTree< Object > > addTree (const std::string &unique_name, const std::string &path)
 
 Analysis (const std::string &inputFilelist, const std::string &evtinfo="MssmHbb/Events/EventInfo")
 
std::shared_ptr< BTagCalibrationReaderbtagCalibration (const std::string &tagger, const std::string &filename, const std::string &wp, const std::string &sysType="central", const std::vector< std::string > &otherSysTypes={"up","down"})
 
std::shared_ptr< BTagCalibrationReaderbtagCalibration ()
 
void btagEfficienciesAlgo (const std::string &)
 
void btagEfficienciesFlavour (const std::string &)
 
float btagEfficiency (const analysis::tools::Jet &, const int &rank=0)
 
template<class Object >
std::shared_ptr< Collection< Object > > collection (const std::string &unique_name)
 
double crossSection ()
 
double crossSection (const std::string &title)
 
int crossSections (const std::string &path)
 
template<class Object >
void defaultCollection (const std::string &unique_name)
 
template<class Object >
std::string defaultCollection ()
 
void event (const int &event, const bool &addCollections=true)
 
int event ()
 
FilterResults eventFilter (const std::string &path)
 
std::string fileFullName ()
 
std::string fileName ()
 
FilterResults generatorFilter (const std::string &path)
 
double genScale ()
 
double genWeight ()
 
float instantLumi ()
 
bool isMC ()
 
std::shared_ptr< JetResolutionInfojetResolutionInfo (const std::string &, const std::string &)
 
void listCrossSections ()
 
void listGeneratorFilter ()
 
double luminosity ()
 
double luminosity (const std::string &title)
 
float lumiPileup ()
 
int lumiSection ()
 
template<class Object1 , class Object2 >
void match (const std::string &collection, const std::string &match_collection, const float &deltaR=0.5)
 
template<class Object1 , class Object2 >
void match (const std::string &collection, const std::vector< std::string > &match_collections, const float &deltaR=0.5)
 
std::shared_ptr< MuonIdWeightmuonIDWeights (const std::string &)
 
int nPileup ()
 
float nTruePileup ()
 
int numberEvents ()
 
PDF pdf ()
 
std::shared_ptr< PileupWeightpileupWeights (const std::string &)
 
int processJsonFile (const std::string &fileName="goodJson.txt")
 
double rho ()
 fixedGridRhoAll More...
 
int run ()
 
float scaleLuminosity (const float &lumi)
 
int seed (const std::string &)
 seed for random number generator read from a txt file given as a parameter More...
 
bool selectJson ()
 
int size ()
 
void tag (const std::string &)
 
std::string tag ()
 
template<class Object >
std::shared_ptr< PhysicsObjectTree< Object > > tree (const std::string &unique_name)
 
int triggerPrescale (const std::string &trig)
 
std::map< std::string, int > triggerPrescale (const std::vector< std::string > &trigs)
 
bool triggerResult (const std::string &trig)
 
bool triggerResults (const std::string &path)
 
 ~Analysis ()
 

Protected Member Functions

void treeInit_ (const std::string &unique_name, const std::string &path)
 

Protected Attributes

std::shared_ptr< BTagCalibrationbtagcalib_
 
std::shared_ptr< BTagCalibrationReaderbtagcalibread_
 
std::string btageff_algo_
 
std::string btageff_flavour_
 
std::map< std::string, std::any > c_any_
 
std::string defaultGenParticle_
 
int event_
 
FilterResults evtfilter_
 
TFile * fileBtagEff_
 
TFileCollection * fileCollection_
 
TCollection * fileList_
 
FilterResults genfilter_
 
double genScale_
 
double genWeight_
 
std::map< int, std::vector< std::string > > goodLumi_
 
std::map< std::string, TH2F * > h2_btageff_
 
std::string inputFilelist_
 
float inst_lumi_
 
bool is_mc_
 
std::shared_ptr< JetResolutionInfojerinfo_
 
std::map< int, std::vector< int > > json_
 
int lumi_
 
float lumi_pu_
 
std::shared_ptr< MuonIdWeightmuonIDweights_
 
float mylumi_
 
int n_pu_
 
float n_true_pu_
 
int nevents_
 
PDF pdf_
 
std::shared_ptr< PileupWeightpuweights_
 
double rho_
 
int run_
 
std::map< std::string, std::any > t_any_
 
TChain * t_event_
 
TChain * t_evtfilter_
 
TChain * t_genfilter_
 
TChain * t_triggerResults_
 
std::map< std::string, std::string > t_type_
 
TChain * t_xsection_
 
std::string tag_
 
std::map< std::string, TChain * > tree_
 
std::map< std::string, bool > triggerResults_
 
std::map< std::string, int > triggerResultsPS_
 
std::map< std::string, double > xsections_
 

Detailed Description

Definition at line 60 of file Analysis.h.

Constructor & Destructor Documentation

Analysis::Analysis ( const std::string &  inputFilelist,
const std::string &  evtinfo = "MssmHbb/Events/EventInfo" 
)

Definition at line 25 of file Analysis.cc.

References btageff_algo_, btageff_flavour_, event_, fileCollection_, fileList_, genScale_, genWeight_, analysis::tools::PDF::id, inputFilelist_, inst_lumi_, is_mc_, lumi_, lumi_pu_, mylumi_, n_pu_, n_true_pu_, nevents_, pdf_, rho_, run_, t_event_, and analysis::tools::PDF::x.

26 {
27  inputFilelist_ = inputFilelist;
28  fileCollection_ = new TFileCollection("fileCollection","",inputFilelist.c_str());
29  fileList_ = (TCollection*) fileCollection_->GetList();
30 
31  // event info (must be in the tree always)
32  t_event_ = new TChain(evtinfo.c_str());
33  t_event_ -> AddFileInfoList(fileList_);
34 
35  std::vector<std::string> branches;
36  TObjArray * treeBranches = t_event_->GetListOfBranches();
37  for ( int i = 0 ; i < treeBranches->GetEntries() ; ++i )
38  branches.push_back(treeBranches->At(i)->GetName());
39 
40  t_event_ -> SetBranchAddress("event", &event_);
41  t_event_ -> SetBranchAddress("run", &run_);
42  t_event_ -> SetBranchAddress("lumisection", &lumi_);
43 
44  // For backward compatibility
45  std::vector<std::string>::iterator it;
46  it = std::find(branches.begin(),branches.end(),"nPileup"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &n_pu_);
47  it = std::find(branches.begin(),branches.end(),"nTruePileup"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &n_true_pu_);
48 
49  it = std::find(branches.begin(),branches.end(),"lumiPileup"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &lumi_pu_);
50  it = std::find(branches.begin(),branches.end(),"instantLumi"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &inst_lumi_);
51 
52  it = std::find(branches.begin(),branches.end(),"genWeight"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &genWeight_);
53  it = std::find(branches.begin(),branches.end(),"genScale"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &genScale_);
54  it = std::find(branches.begin(),branches.end(),"pdfid1"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &pdf_.id.first);
55  it = std::find(branches.begin(),branches.end(),"pdfid2"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &pdf_.id.second);
56  it = std::find(branches.begin(),branches.end(),"pdfx1"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &pdf_.x.first);
57  it = std::find(branches.begin(),branches.end(),"pdfx2"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &pdf_.x.second);
58 
59  it = std::find(branches.begin(),branches.end(),"rho"); if ( it != branches.end() ) t_event_ -> SetBranchAddress( (*it).c_str(), &rho_);
60 
61 // t_event_ -> SetBranchAddress("nPileup", &n_pu_);
62 // t_event_ -> SetBranchAddress("nTruePileup", &n_true_pu_);
63 
64  nevents_ = t_event_ -> GetEntries();
65 
66  t_event_ -> GetEntry(1); // Check whether it's mc simulation
67  if (run_ == 1) { // A bit stupid, but it's only solution that I found for the moment
68  is_mc_ = true;
69  } else {
70  is_mc_ = false;
71  }
72 
73  btageff_algo_ = "";
74  btageff_flavour_ = "";
75 
76  mylumi_= -1.;
77 
78 
79  //if(is_mc_) crossSection();
80 
81 }
std::pair< double, double > x
std::string inputFilelist_
Definition: Analysis.h:180
std::string btageff_algo_
Definition: Analysis.h:189
std::string btageff_flavour_
Definition: Analysis.h:188
std::pair< int, int > id
TCollection * fileList_
Definition: Analysis.h:179
TFileCollection * fileCollection_
Definition: Analysis.h:178
Analysis::~Analysis ( )

Definition at line 83 of file Analysis.cc.

84 {
85  // do anything here that needs to be done at desctruction time
86  // (e.g. close files, deallocate resources etc.)
87 }

Member Function Documentation

void Analysis::addBtagEfficiencies ( const std::string &  filename)

Definition at line 416 of file Analysis.cc.

References btageff_algo_, btageff_flavour_, fileBtagEff_, and h2_btageff_.

Referenced by main().

417 {
418  fileBtagEff_ = new TFile(filename.c_str(),"OLD");
419  std::string ftitle = fileBtagEff_->GetTitle();
420  std::vector<std::string> field;
421  if ( ftitle != "" )
422  {
423  boost::split(field, ftitle, boost::is_any_of(":"));
424  btageff_flavour_ = field[0];
425  btageff_algo_ = field[1];
426  }
427 
428  TList * mylist = fileBtagEff_->GetListOfKeys();
429  for ( int i = 0 ; i < mylist->GetSize() ; ++i )
430  {
431  std::string className = ((TKey*) mylist -> At(i)) -> GetClassName();
432  std::string objName = ((TKey*) mylist -> At(i)) -> GetName();
433  if ( className == "TH2F" )
434  h2_btageff_[objName] = (TH2F*) fileBtagEff_->Get(objName.c_str());
435 // if ( className == "TH2D" )
436 // h2_btageff_[objName] = (TH2D*) fileBtagEff_->Get(objName.c_str());
437  }
438 
439 }
std::map< std::string, TH2F * > h2_btageff_
Definition: Analysis.h:187
std::string btageff_algo_
Definition: Analysis.h:189
std::string btageff_flavour_
Definition: Analysis.h:188
template<class Object >
std::shared_ptr< Collection< Object > > Analysis::addCollection ( const std::string &  unique_name)

Definition at line 297 of file Analysis.h.

298  {
299  // Still need to see how to deal with collections not originating from the ntuple,
300  // e.g. a selected jets collection from the ntuple jets collection.
301 
302  // If tree does not exist, return NULL
303  std::map<std::string, std::any >::iterator it = t_any_.find(unique_name);
304  if ( it == t_any_.end() )
305  return nullptr;
306 
307  auto tree = std::any_cast< std::shared_ptr< PhysicsObjectTree<Object> > > (t_any_[unique_name]);
308  c_any_[unique_name] = std::shared_ptr< Collection<Object> > ( new Collection<Object>(tree -> collection()));
309  std::shared_ptr< Collection<Object> > ret = std::any_cast< std::shared_ptr< Collection<Object> > > (c_any_[unique_name]);
310 
311  return ret;
312  }
std::shared_ptr< Collection< Object > > collection(const std::string &unique_name)
Definition: Analysis.h:336
std::shared_ptr< PhysicsObjectTree< Object > > tree(const std::string &unique_name)
Definition: Analysis.h:286
std::map< std::string, std::any > c_any_
Definition: Analysis.h:249
std::map< std::string, std::any > t_any_
Definition: Analysis.h:245
template<class Object >
std::shared_ptr< Collection< Object > > Analysis::addCollection ( const Collection< Object > &  collection)

Definition at line 315 of file Analysis.h.

References analysis::tools::Collection< Object >::name().

316  {
317  std::string unique_name = collection.name();
318  t_any_[unique_name] = nullptr;
319  c_any_[unique_name] = std::shared_ptr< Collection<Object> > ( new Collection<Object>(collection) );
320  std::shared_ptr< Collection<Object> > ret = std::any_cast< std::shared_ptr< Collection<Object> > > (c_any_[unique_name]);
321 
322  return ret;
323  }
std::shared_ptr< Collection< Object > > collection(const std::string &unique_name)
Definition: Analysis.h:336
std::map< std::string, std::any > c_any_
Definition: Analysis.h:249
std::map< std::string, std::any > t_any_
Definition: Analysis.h:245
template<class Object >
std::shared_ptr< Collection< Object > > Analysis::addCollection ( const std::vector< Object > &  objects,
const std::string &  unique_name 
)

Definition at line 326 of file Analysis.h.

327  {
328  Collection<Object> collection(objects,unique_name);
329  t_any_[unique_name] = nullptr;
330  c_any_[unique_name] = std::shared_ptr< Collection<Object> > ( new Collection<Object>(collection) );
331  std::shared_ptr< Collection<Object> > ret = std::any_cast< std::shared_ptr< Collection<Object> > > (c_any_[unique_name]);
332  return ret;
333  }
std::shared_ptr< Collection< Object > > collection(const std::string &unique_name)
Definition: Analysis.h:336
std::map< std::string, std::any > c_any_
Definition: Analysis.h:249
std::map< std::string, std::any > t_any_
Definition: Analysis.h:245
template<class Object >
std::shared_ptr< PhysicsObjectTree< Object > > Analysis::addTree ( const std::string &  unique_name,
const std::string &  path 
)

Definition at line 273 of file Analysis.h.

References nano_94X_2017_rereco31Mar18-v1::name, and naf_mult_submit::type.

Referenced by main().

274  {
275  if ( path == "" || unique_name == "" ) return nullptr;
276  this->treeInit_(unique_name,path);
277  t_any_[unique_name] = std::shared_ptr< PhysicsObjectTree<Object> > ( new PhysicsObjectTree<Object>(tree_[unique_name], unique_name) );
278  std::string type = boost::core::demangle(typeid(Object).name());
279  std::vector<std::string> tmp;
280  boost::split( tmp, type, boost::is_any_of("::"));
281  t_type_[unique_name] = tmp.back();
282  return std::any_cast< std::shared_ptr< PhysicsObjectTree<Object> > > (t_any_[unique_name]);
283  }
std::map< std::string, std::string > t_type_
Definition: Analysis.h:246
std::map< std::string, TChain * > tree_
Definition: Analysis.h:242
std::map< std::string, std::any > t_any_
Definition: Analysis.h:245
void treeInit_(const std::string &unique_name, const std::string &path)
Definition: Analysis.cc:136
std::shared_ptr< BTagCalibrationReader > Analysis::btagCalibration ( const std::string &  tagger,
const std::string &  filename,
const std::string &  wp,
const std::string &  sysType = "central",
const std::vector< std::string > &  otherSysTypes = {"up", "down"} 
)

Definition at line 511 of file Analysis.cc.

References btagcalib_, btagcalibread_, BTagEntry::FLAV_B, BTagEntry::FLAV_C, BTagEntry::FLAV_UDSG, BTagEntry::OP_LOOSE, BTagEntry::OP_MEDIUM, BTagEntry::OP_RESHAPING, and BTagEntry::OP_TIGHT.

Referenced by main().

516 {
517  std::string wps = wp;
518  std::transform(wps.begin(), wps.end(), wps.begin(), ::tolower);
519 
521  if ( wps == "loose" ) op = BTagEntry::OP_LOOSE;
522  if ( wps == "medium" ) op = BTagEntry::OP_MEDIUM;
523  if ( wps == "tight" ) op = BTagEntry::OP_TIGHT;
524  if ( wps == "reshape" ) op = BTagEntry::OP_RESHAPING;
525 
526  btagcalib_ = std::shared_ptr<BTagCalibration> ( new BTagCalibration(tagger,filename));
527  btagcalibread_ = std::shared_ptr<BTagCalibrationReader>( new BTagCalibrationReader(op,sysType,otherSysTypes) );
528 
529 
530  btagcalibread_ -> load(*btagcalib_, // calibration instance
531  BTagEntry::FLAV_B, // btag flavour - B
532  "comb"); // measurement type
533 
534  btagcalibread_ -> load(*btagcalib_, // calibration instance
535  BTagEntry::FLAV_C, // btag flavour - C
536  "comb"); // measurement type
537 
538  btagcalibread_ -> load(*btagcalib_, // calibration instance
539  BTagEntry::FLAV_UDSG, // btag flavour - UDSG
540  "incl"); // measurement type
541 
542 
543  return btagcalibread_;
544 
545 }
std::shared_ptr< BTagCalibrationReader > btagcalibread_
Definition: Analysis.h:192
std::shared_ptr< BTagCalibration > btagcalib_
Definition: Analysis.h:191
std::shared_ptr< BTagCalibrationReader > Analysis::btagCalibration ( )

Definition at line 548 of file Analysis.cc.

References btagcalibread_.

549 {
550  return btagcalibread_;
551 }
std::shared_ptr< BTagCalibrationReader > btagcalibread_
Definition: Analysis.h:192
void Analysis::btagEfficienciesAlgo ( const std::string &  algo)
inline

Definition at line 394 of file Analysis.h.

Referenced by main().

394 { btageff_algo_ = algo; }
std::string btageff_algo_
Definition: Analysis.h:189
void Analysis::btagEfficienciesFlavour ( const std::string &  flavour)
inline

Definition at line 395 of file Analysis.h.

Referenced by main().

395 { btageff_flavour_ = flavour; }
std::string btageff_flavour_
Definition: Analysis.h:188
float Analysis::btagEfficiency ( const analysis::tools::Jet jet,
const int &  rank = 0 
)

Definition at line 441 of file Analysis.cc.

References btageff_flavour_, analysis::tools::Candidate::eta(), analysis::tools::Jet::extendedFlavour(), analysis::tools::Jet::flavour(), h2_btageff_, and analysis::tools::Candidate::pt().

Referenced by main().

442 {
443  float eff = 0.;
444  std::string flav;
445  std::string srank;
446  if ( rank < 1 ) srank = "";
447  else srank = Form("%i",rank);
448  if ( btageff_flavour_ == "Extended" || btageff_flavour_ == "extended" )
449  {
450  flav = jet.extendedFlavour();
451  if ( flav == "udsg" ) flav = "l";
452  }
453  else
454  {
455  int iflav = jet.flavour(btageff_flavour_);
456  if ( abs(iflav) == 5 ) flav = "b";
457  if ( abs(iflav) == 4 ) flav = "c";
458  if ( abs(iflav) < 4 || iflav == 21 ) flav = "l";
459  }
460  float pt = jet.pt();
461  float eta = fabs(jet.eta());
462 
463  std::string hname = Form("h_%sjet%s_eff_pt_eta",flav.c_str(),srank.c_str());
464 
465  int bin = h2_btageff_[hname] -> FindBin(pt,eta);
466 
467  eff = h2_btageff_[hname] -> GetBinContent(bin);
468 
469  return eff;
470 }
float eta() const
returns the pseudorapidity
Definition: Candidate.cc:134
std::string extendedFlavour() const
returns the extended flavour definition
Definition: Jet.cc:66
std::map< std::string, TH2F * > h2_btageff_
Definition: Analysis.h:187
int flavour() const
returns the flavour with the Hadron definition (=0 for data)
Definition: Jet.cc:58
std::string btageff_flavour_
Definition: Analysis.h:188
float pt() const
returns the transverse momentum
Definition: Candidate.cc:133
template<class Object >
std::shared_ptr< Collection< Object > > Analysis::collection ( const std::string &  unique_name)

Definition at line 336 of file Analysis.h.

Referenced by main().

337  {
338  std::shared_ptr< Collection<Object> > ret = std::any_cast< std::shared_ptr< Collection<Object> > > (c_any_[unique_name]);
339  return ret;
340  }
std::map< std::string, std::any > c_any_
Definition: Analysis.h:249
double Analysis::crossSection ( )

Definition at line 241 of file Analysis.cc.

Referenced by luminosity().

242 {
243  return this -> crossSection("crossSection");
244 }
double Analysis::crossSection ( const std::string &  title)

Definition at line 245 of file Analysis.cc.

References t_xsection_, and xsections_.

246 {
247  if ( t_xsection_ == NULL ) return -1.;
248  return xsections_[xs];
249 }
std::map< std::string, double > xsections_
Definition: Analysis.h:203
int Analysis::crossSections ( const std::string &  path)

Definition at line 219 of file Analysis.cc.

References fileList_, t_xsection_, and xsections_.

220 {
221  if ( path == "" ) return -2;
222  t_xsection_ = new TChain(path.c_str());
223  int ok = t_xsection_ -> AddFileInfoList(fileList_);
224  if ( ok == 0 )
225  {
226  std::cout << "tree does not exist" << std::endl;
227  return -1;
228  }
229  TObjArray * xsecBranches = t_xsection_->GetListOfBranches();
230  for ( int i = 0 ; i < xsecBranches->GetEntries() ; ++i )
231  {
232  std::string branch = xsecBranches->At(i)->GetName();
233  if ( branch == "run" ) continue;
234  xsections_[branch] = 0;
235  t_xsection_ -> SetBranchAddress(branch.c_str(), &xsections_[branch]);
236  }
237  t_xsection_ -> GetEntry(0);
238  return 0;
239 }
std::map< std::string, double > xsections_
Definition: Analysis.h:203
TCollection * fileList_
Definition: Analysis.h:179
template<class Object >
void Analysis::defaultCollection ( const std::string &  unique_name)

Definition at line 358 of file Analysis.h.

359  {
360  if ( std::is_same<Object,GenParticle>::value ) defaultGenParticle_ = unique_name;
361  }
std::string defaultGenParticle_
Definition: Analysis.h:211
template<class Object >
std::string Analysis::defaultCollection ( )

Definition at line 363 of file Analysis.h.

364  {
365  std::string ret;
366  if ( std::is_same<Object,GenParticle>::value ) ret = defaultGenParticle_ ;
367  return ret;
368  }
std::string defaultGenParticle_
Definition: Analysis.h:211
void Analysis::event ( const int &  event,
const bool &  addCollections = true 
)

Definition at line 94 of file Analysis.cc.

References genScale_, genWeight_, analysis::tools::PDF::id, n_pu_, n_true_pu_, nano_94X_2017_rereco31Mar18-v1::name, pdf_, t_any_, t_event_, t_type_, tree(), naf_mult_submit::type, and analysis::tools::PDF::x.

Referenced by main().

95 {
96  // Initialisation for backward compatibility
97  n_pu_ = -1;
98  n_true_pu_ = -1;
99 
100  genWeight_ = -1.;
101  genScale_ = -1.;
102  pdf_.id.first = 0;
103  pdf_.id.second = 0;
104  pdf_.x.first = -1.;
105  pdf_.x.second = -1.;
106 
107  t_event_ -> GetEntry(event);
108  if ( !addCollections) return;
109 
110  for ( auto & tree : t_any_ )
111  {
112  std::string name = tree.first;
113  std::string type = t_type_[name];
114  if ( type == "Jet" ) this->addCollection<Jet>(name);
115  if ( type == "Muon" ) this->addCollection<Muon>(name);
116  if ( type == "GenJet" ) this->addCollection<GenJet>(name);
117  if ( type == "MET" ) this->addCollection<MET>(name);
118  if ( type == "Vertex" ) this->addCollection<Vertex>(name);
119  if ( type == "TriggerObject" ) this->addCollection<TriggerObject>(name);
120  if ( type == "GenParticle" ) this->addCollection<GenParticle>(name);
121  if ( type == "Candidate" ) this->addCollection<Candidate>(name);
122  if ( type == "JetTag" ) this->addCollection<JetTag>(name);
123  if ( type == "L1TMuon" ) this->addCollection<L1TMuon>(name);
124  if ( type == "L1TJet" ) this->addCollection<L1TJet>(name);
125  if ( type == "RecoMuon" ) this->addCollection<RecoMuon>(name);
126  if ( type == "RecoTrack" ) this->addCollection<RecoTrack>(name);
127  }
128 
129 }
std::shared_ptr< PhysicsObjectTree< Object > > tree(const std::string &unique_name)
Definition: Analysis.h:286
std::pair< double, double > x
std::map< std::string, std::string > t_type_
Definition: Analysis.h:246
std::pair< int, int > id
std::map< std::string, std::any > t_any_
Definition: Analysis.h:245
int Analysis::event ( )
inline

Definition at line 378 of file Analysis.h.

References event_.

378 { return event_; }
FilterResults Analysis::eventFilter ( const std::string &  path)

Definition at line 348 of file Analysis.cc.

References analysis::tools::FilterResults::efficiency, evtfilter_, fileList_, analysis::tools::FilterResults::filtered, t_evtfilter_, and analysis::tools::FilterResults::total.

Referenced by main().

349 {
350  t_evtfilter_ = new TChain(path.c_str());
351  t_evtfilter_ -> AddFileInfoList(fileList_);
352 
353  unsigned int ntotal;
354  unsigned int nfiltered;
355  unsigned int sumtotal = 0;
356  unsigned int sumfiltered = 0;
357 
358  t_evtfilter_ -> SetBranchAddress("nEventsTotal", &ntotal);
359  t_evtfilter_ -> SetBranchAddress("nEventsFiltered", &nfiltered);
360 
361  for ( int i = 0; i < t_evtfilter_->GetEntries(); ++i )
362  {
363  t_evtfilter_ -> GetEntry(i);
364  sumtotal += ntotal;
365  sumfiltered += nfiltered;
366  }
367 
368 
369  evtfilter_.total = sumtotal;
370  evtfilter_.filtered = sumfiltered;
371  evtfilter_.efficiency = float(sumfiltered)/sumtotal;
372 
373  return evtfilter_;
374 }
FilterResults evtfilter_
Definition: Analysis.h:208
TCollection * fileList_
Definition: Analysis.h:179
std::string Analysis::fileFullName ( )
inline

Definition at line 397 of file Analysis.h.

Referenced by fileName().

397 { return std::string(t_event_ -> GetFile() -> GetName()) ; }
std::string Analysis::fileName ( )

Definition at line 553 of file Analysis.cc.

References fileFullName().

Referenced by main().

554 {
555  std::string filename;
556  filename = boost::filesystem::basename(this->fileFullName())+boost::filesystem::extension(this->fileFullName());
557  return filename ;
558 }
std::string fileFullName()
Definition: Analysis.h:397
FilterResults Analysis::generatorFilter ( const std::string &  path)

Definition at line 296 of file Analysis.cc.

References analysis::tools::FilterResults::efficiency, fileList_, analysis::tools::FilterResults::filtered, genfilter_, t_genfilter_, and analysis::tools::FilterResults::total.

297 {
298  t_genfilter_ = new TChain(path.c_str());
299  t_genfilter_ -> AddFileInfoList(fileList_);
300 
301  unsigned int ntotal;
302  unsigned int nfiltered;
303  unsigned int sumtotal = 0;
304  unsigned int sumfiltered = 0;
305 
306  t_genfilter_ -> SetBranchAddress("nEventsTotal", &ntotal);
307  t_genfilter_ -> SetBranchAddress("nEventsFiltered", &nfiltered);
308 
309  for ( int i = 0; i < t_genfilter_->GetEntries(); ++i )
310  {
311  t_genfilter_ -> GetEntry(i);
312  sumtotal += ntotal;
313  sumfiltered += nfiltered;
314  }
315 
316 
317  genfilter_.total = sumtotal;
318  genfilter_.filtered = sumfiltered;
319  genfilter_.efficiency = float(sumfiltered)/sumtotal;
320 
321  return genfilter_;
322 }
TCollection * fileList_
Definition: Analysis.h:179
FilterResults genfilter_
Definition: Analysis.h:207
double Analysis::genScale ( )
inline

Definition at line 390 of file Analysis.h.

390 { return genScale_; }
double Analysis::genWeight ( )
inline

Definition at line 389 of file Analysis.h.

389 { return genWeight_; }
float Analysis::instantLumi ( )
inline

Definition at line 387 of file Analysis.h.

387 { return inst_lumi_;}
bool Analysis::isMC ( )
inline

Definition at line 381 of file Analysis.h.

381 { return is_mc_ ; }
std::shared_ptr< JetResolutionInfo > Analysis::jetResolutionInfo ( const std::string &  f_jer,
const std::string &  f_jersf 
)

Definition at line 489 of file Analysis.cc.

References jerinfo_.

Referenced by main().

490 {
491  JetResolution res = JetResolution(f_jer);
493  jerinfo_ = std::make_shared<JetResolutionInfo>(JetResolutionInfo{res,sf});
494  return jerinfo_;
495 }
std::shared_ptr< JetResolutionInfo > jerinfo_
Definition: Analysis.h:194
void Analysis::listCrossSections ( )

Definition at line 273 of file Analysis.cc.

References t_xsection_, and xsections_.

274 {
275  std::cout << "=======================================================" << std::endl;
276  std::cout << " CROSS SECTIONS" << std::endl;
277  std::cout << "=======================================================" << std::endl;
278  if ( t_xsection_ == NULL )
279  {
280  std::cout << "No cross section tree has been declared." << std::endl;
281  std::cout << "=======================================================" << std::endl;
282  std::cout << std::endl;
283  std::cout << std::endl;
284  return;
285  }
286 
287  for ( auto& xs : xsections_ )
288  {
289  std::cout << xs.first << " = " << xs.second << " pb " << std::endl;
290  }
291  std::cout << "=======================================================" << std::endl;
292  std::cout << std::endl;
293  std::cout << std::endl;
294 }
std::map< std::string, double > xsections_
Definition: Analysis.h:203
void Analysis::listGeneratorFilter ( )

Definition at line 324 of file Analysis.cc.

References analysis::tools::FilterResults::efficiency, analysis::tools::FilterResults::filtered, genfilter_, t_genfilter_, and analysis::tools::FilterResults::total.

325 {
326  std::cout << "=======================================================" << std::endl;
327  std::cout << " GENERATOR FILTER" << std::endl;
328  std::cout << "=======================================================" << std::endl;
329  if ( t_genfilter_ == NULL )
330  {
331  std::cout << "No generator tree has been declared." << std::endl;
332  std::cout << "=======================================================" << std::endl;
333  std::cout << std::endl;
334  std::cout << std::endl;
335  return;
336  }
337  std::cout << "Total generated events = " << genfilter_.total << std::endl;
338  std::cout << "Filtered generated events = " << genfilter_.filtered << std::endl;
339  std::cout << "Generator Filter Efficiency = " << genfilter_.efficiency << std::endl;
340 
341  std::cout << "=======================================================" << std::endl;
342  std::cout << std::endl;
343  std::cout << std::endl;
344 
345 
346 }
FilterResults genfilter_
Definition: Analysis.h:207
double Analysis::luminosity ( )

Definition at line 251 of file Analysis.cc.

References crossSection(), and nevents_.

Referenced by scaleLuminosity().

252 {
253  return (nevents_ / this -> crossSection() );
254 }
double Analysis::luminosity ( const std::string &  title)

Definition at line 256 of file Analysis.cc.

References crossSection(), nevents_, and t_xsection_.

257 {
258  if ( t_xsection_ == NULL ) return -1.;
259  return (nevents_ / this -> crossSection(xs));
260 }
float Analysis::lumiPileup ( )
inline

Definition at line 386 of file Analysis.h.

386 { return lumi_pu_; }
int Analysis::lumiSection ( )
inline

Definition at line 380 of file Analysis.h.

References lumi_.

Referenced by main().

380 { return lumi_ ; }
template<class Object1 , class Object2 >
void Analysis::match ( const std::string &  collection,
const std::string &  match_collection,
const float &  deltaR = 0.5 
)

Definition at line 343 of file Analysis.h.

Referenced by main().

344  {
345  if ( match_collection == "" ) return;
346  auto o1 = std::any_cast< std::shared_ptr< Collection<Object1> > > (c_any_[collection]);
347  auto o2 = std::any_cast< std::shared_ptr< Collection<Object2> > > (c_any_[match_collection]);
348  o1->matchTo(o2->vectorCandidates(),o2->name(), deltaR);
349  }
std::shared_ptr< Collection< Object > > collection(const std::string &unique_name)
Definition: Analysis.h:336
std::map< std::string, std::any > c_any_
Definition: Analysis.h:249
template<class Object1 , class Object2 >
void Analysis::match ( const std::string &  collection,
const std::vector< std::string > &  match_collections,
const float &  deltaR = 0.5 
)

Definition at line 352 of file Analysis.h.

353  {
354  for ( auto & mc : match_collections )
355  this->match<Object1,Object2>(collection, mc, deltaR);
356  }
std::shared_ptr< Collection< Object > > collection(const std::string &unique_name)
Definition: Analysis.h:336
std::shared_ptr< MuonIdWeight > Analysis::muonIDWeights ( const std::string &  f_muID)

Definition at line 504 of file Analysis.cc.

References muonIDweights_.

505 {
506  muonIDweights_ = std::make_shared<MuonIdWeight>(MuonIdWeight(f_muID));
507  return muonIDweights_;
508 }
std::shared_ptr< MuonIdWeight > muonIDweights_
Definition: Analysis.h:200
int Analysis::nPileup ( )
inline

Definition at line 383 of file Analysis.h.

Referenced by main().

383 { return n_pu_; }
float Analysis::nTruePileup ( )
inline

Definition at line 384 of file Analysis.h.

384 { return n_true_pu_; }
int Analysis::numberEvents ( )
inline

Definition at line 376 of file Analysis.h.

376 { return nevents_; }
PDF Analysis::pdf ( )
inline

Definition at line 391 of file Analysis.h.

391 { return pdf_; }
std::shared_ptr< PileupWeight > Analysis::pileupWeights ( const std::string &  f_pu)

Definition at line 497 of file Analysis.cc.

References puweights_.

498 {
499  puweights_ = std::make_shared<PileupWeight>(PileupWeight(f_pu));
500  return puweights_;
501 }
std::shared_ptr< PileupWeight > puweights_
Definition: Analysis.h:197
int Analysis::processJsonFile ( const std::string &  fileName = "goodJson.txt")

Definition at line 378 of file Analysis.cc.

References json_, and run().

Referenced by main().

379 {
380  using boost::property_tree::ptree;
381  ptree pt;
382  read_json(fileName , pt);
383 
384  for (auto & element: pt)
385  {
386  int run = std::stoi(element.first);
387  std::vector<int> lumiranges;
388  for ( auto & property_array : element.second )
389  {
390  for ( auto & property : property_array.second )
391  {
392  lumiranges.push_back(property.second.get_value<int>());
393  }
394  }
395  if ( lumiranges.size()%2 != 0 ) return -1;
396 // std::sort(lumiranges.begin(), lumiranges.end()); // not really needed
397 
398  json_[run] = lumiranges;
399  }
400  return 0;
401 }
std::string fileName()
Definition: Analysis.cc:553
std::map< int, std::vector< int > > json_
Definition: Analysis.h:255
double Analysis::rho ( )
inline

fixedGridRhoAll

Definition at line 392 of file Analysis.h.

392 { return rho_; }
int Analysis::run ( )
inline

Definition at line 379 of file Analysis.h.

References run_.

Referenced by main(), and processJsonFile().

379 { return run_ ; }
float Analysis::scaleLuminosity ( const float &  lumi)

Definition at line 262 of file Analysis.cc.

References luminosity(), and mylumi_.

263 {
264  float lumiScale = 1.;
265  mylumi_ = lumi;
266  if ( mylumi_ < 0 ) return lumiScale;
267 
268  lumiScale = mylumi_/this->luminosity();
269  return lumiScale;
270 
271 }
int Analysis::seed ( const std::string &  name)

seed for random number generator read from a txt file given as a parameter

Definition at line 561 of file Analysis.cc.

References f.

562 {
563  int seed = 1;
564  std::ifstream f(name.c_str(),std::ios_base::in);
565  if ( ! f.good() ) return -1;
566 
567  f >> seed;
568  f.close();
569  if ( seed < 1 ) return -1;
570 
571  return seed;
572 }
int seed(const std::string &)
seed for random number generator read from a txt file given as a parameter
Definition: Analysis.cc:561
TFile * f[10]
Definition: PlotsCompare.cc:24
bool Analysis::selectJson ( )

Definition at line 403 of file Analysis.cc.

References json_, lumi_, and run_.

Referenced by main().

404 {
405  bool isGood = false;
406 
407  std::vector<int> lumiranges = json_[run_];
408  for ( size_t i = 0 ; i< lumiranges.size() ; i += 2 )
409  {
410  if ( lumi_ >= lumiranges.at(i) && lumi_ <= lumiranges.at(i+1) ) isGood = true;
411  }
412  return isGood;
413 }
std::map< int, std::vector< int > > json_
Definition: Analysis.h:255
int Analysis::size ( )
inline

Definition at line 377 of file Analysis.h.

Referenced by main().

377 { return nevents_; }
void Analysis::tag ( const std::string &  t)
inline

Definition at line 371 of file Analysis.h.

371  { std::cout << "Tag " << t << " has been defined." << std::endl ;
372  tag_ = t; }
std::string Analysis::tag ( )
inline

Definition at line 373 of file Analysis.h.

373 { return tag_ ; }
template<class Object >
std::shared_ptr< PhysicsObjectTree< Object > > Analysis::tree ( const std::string &  unique_name)

Definition at line 286 of file Analysis.h.

Referenced by event().

287  {
288  // If tree does not exist, return NULL
289  std::map<std::string, std::any >::iterator it = t_any_.find(unique_name);
290  if ( it == t_any_.end() )
291  return nullptr;
292  return std::any_cast< std::shared_ptr< PhysicsObjectTree<Object> > > (t_any_[unique_name]);
293  }
std::map< std::string, std::any > t_any_
Definition: Analysis.h:245
void Analysis::treeInit_ ( const std::string &  unique_name,
const std::string &  path 
)
protected

Definition at line 136 of file Analysis.cc.

References fileList_, t_event_, and tree_.

137 {
138  std::string treeTitle = ((TTree*) t_event_->GetFile()->Get(path.c_str())) -> GetTitle();
139  tree_[unique_name] = new TChain(path.c_str(),treeTitle.c_str());
140  tree_[unique_name] -> AddFileInfoList(fileList_);
141  t_event_ -> AddFriend(tree_[unique_name]);
142 
143  treeTitle.erase(std::remove(treeTitle.begin(),treeTitle.end(),' '),treeTitle.end());
144  std::string classname = treeTitle.substr(0,treeTitle.find_first_of("|"));
145  std::string inputTag = treeTitle.substr(treeTitle.find_first_of("|")+1);
146 
147 }
std::map< std::string, TChain * > tree_
Definition: Analysis.h:242
TCollection * fileList_
Definition: Analysis.h:179
int Analysis::triggerPrescale ( const std::string &  trig)

Definition at line 197 of file Analysis.cc.

References triggerResultsPS_.

Referenced by main(), and triggerPrescale().

198 {
199 // if ( t_triggerResults_ == NULL ) return -1.;
200  return triggerResultsPS_["ps_"+trig];
201 }
std::map< std::string, int > triggerResultsPS_
Definition: Analysis.h:205
std::map< std::string, int > Analysis::triggerPrescale ( const std::vector< std::string > &  trigs)

Definition at line 203 of file Analysis.cc.

References triggerPrescale().

204 {
205  std::map<std::string,int> ps;
206  for ( auto & trig : trigs )
207  {
208  ps[trig] = triggerPrescale(trig);
209  }
210  return ps;
211 }
int triggerPrescale(const std::string &trig)
Definition: Analysis.cc:197
bool Analysis::triggerResult ( const std::string &  trig)

Definition at line 190 of file Analysis.cc.

References t_triggerResults_, and triggerResults_.

Referenced by main().

191 {
192  if ( trig == "" ) return true;
193  if ( t_triggerResults_ == NULL ) return false;
194  return triggerResults_[trig];
195 }
std::map< std::string, bool > triggerResults_
Definition: Analysis.h:204
bool Analysis::triggerResults ( const std::string &  path)

Definition at line 162 of file Analysis.cc.

References fileList_, t_event_, t_triggerResults_, triggerResults_, and triggerResultsPS_.

Referenced by main().

163 {
164  t_triggerResults_ = new TChain(path.c_str());
165  int ok = t_triggerResults_ -> AddFileInfoList(fileList_);
166  t_event_ -> AddFriend(t_triggerResults_);
167  if ( ok == 0 )
168  {
169  std::cout << "tree does not exist" << std::endl;
170  return false;
171  }
172  TObjArray * triggerBranches = t_triggerResults_ -> GetListOfBranches();
173  for ( int i = 0 ; i < triggerBranches->GetEntries() ; ++i )
174  {
175  std::string branch = triggerBranches->At(i)->GetName();
176  if ( TString(branch).BeginsWith("ps") )
177  {
178  triggerResultsPS_[branch] = 1;
179  t_triggerResults_ -> SetBranchAddress(branch.c_str(), &triggerResultsPS_[branch]);
180  }
181  else
182  {
183  triggerResults_[branch] = 0;
184  t_triggerResults_ -> SetBranchAddress(branch.c_str(), &triggerResults_[branch]);
185  }
186  }
187  return true;
188 }
TCollection * fileList_
Definition: Analysis.h:179
std::map< std::string, int > triggerResultsPS_
Definition: Analysis.h:205
std::map< std::string, bool > triggerResults_
Definition: Analysis.h:204

Member Data Documentation

std::shared_ptr<BTagCalibration> analysis::tools::Analysis::btagcalib_
protected

Definition at line 191 of file Analysis.h.

Referenced by btagCalibration().

std::shared_ptr<BTagCalibrationReader> analysis::tools::Analysis::btagcalibread_
protected

Definition at line 192 of file Analysis.h.

Referenced by btagCalibration().

std::string analysis::tools::Analysis::btageff_algo_
protected

Definition at line 189 of file Analysis.h.

Referenced by addBtagEfficiencies(), and Analysis().

std::string analysis::tools::Analysis::btageff_flavour_
protected

Definition at line 188 of file Analysis.h.

Referenced by addBtagEfficiencies(), Analysis(), and btagEfficiency().

std::map<std::string, std::any > analysis::tools::Analysis::c_any_
protected

Definition at line 249 of file Analysis.h.

std::string analysis::tools::Analysis::defaultGenParticle_
protected

Definition at line 211 of file Analysis.h.

int analysis::tools::Analysis::event_
protected

Definition at line 213 of file Analysis.h.

Referenced by Analysis().

FilterResults analysis::tools::Analysis::evtfilter_
protected

Definition at line 208 of file Analysis.h.

Referenced by eventFilter().

TFile* analysis::tools::Analysis::fileBtagEff_
protected

Definition at line 186 of file Analysis.h.

Referenced by addBtagEfficiencies().

TFileCollection* analysis::tools::Analysis::fileCollection_
protected

Definition at line 178 of file Analysis.h.

Referenced by Analysis().

TCollection* analysis::tools::Analysis::fileList_
protected
FilterResults analysis::tools::Analysis::genfilter_
protected

Definition at line 207 of file Analysis.h.

Referenced by generatorFilter(), and listGeneratorFilter().

double analysis::tools::Analysis::genScale_
protected

Definition at line 225 of file Analysis.h.

Referenced by Analysis(), and event().

double analysis::tools::Analysis::genWeight_
protected

Definition at line 224 of file Analysis.h.

Referenced by Analysis(), and event().

std::map<int,std::vector<std::string> > analysis::tools::Analysis::goodLumi_
protected

Definition at line 206 of file Analysis.h.

std::map<std::string,TH2F *> analysis::tools::Analysis::h2_btageff_
protected

Definition at line 187 of file Analysis.h.

Referenced by addBtagEfficiencies(), and btagEfficiency().

std::string analysis::tools::Analysis::inputFilelist_
protected

Definition at line 180 of file Analysis.h.

Referenced by Analysis().

float analysis::tools::Analysis::inst_lumi_
protected

Definition at line 222 of file Analysis.h.

Referenced by Analysis().

bool analysis::tools::Analysis::is_mc_
protected

Definition at line 216 of file Analysis.h.

Referenced by Analysis().

std::shared_ptr<JetResolutionInfo> analysis::tools::Analysis::jerinfo_
protected

Definition at line 194 of file Analysis.h.

Referenced by jetResolutionInfo().

std::map<int,std::vector<int> > analysis::tools::Analysis::json_
protected

Definition at line 255 of file Analysis.h.

Referenced by processJsonFile(), and selectJson().

int analysis::tools::Analysis::lumi_
protected

Definition at line 215 of file Analysis.h.

Referenced by Analysis(), and selectJson().

float analysis::tools::Analysis::lumi_pu_
protected

Definition at line 221 of file Analysis.h.

Referenced by Analysis().

std::shared_ptr<MuonIdWeight> analysis::tools::Analysis::muonIDweights_
protected

Definition at line 200 of file Analysis.h.

Referenced by muonIDWeights().

float analysis::tools::Analysis::mylumi_
protected

Definition at line 252 of file Analysis.h.

Referenced by Analysis(), and scaleLuminosity().

int analysis::tools::Analysis::n_pu_
protected

Definition at line 218 of file Analysis.h.

Referenced by Analysis(), and event().

float analysis::tools::Analysis::n_true_pu_
protected

Definition at line 219 of file Analysis.h.

Referenced by Analysis(), and event().

int analysis::tools::Analysis::nevents_
protected

Definition at line 230 of file Analysis.h.

Referenced by Analysis(), and luminosity().

PDF analysis::tools::Analysis::pdf_
protected

Definition at line 226 of file Analysis.h.

Referenced by Analysis(), and event().

std::shared_ptr<PileupWeight> analysis::tools::Analysis::puweights_
protected

Definition at line 197 of file Analysis.h.

Referenced by pileupWeights().

double analysis::tools::Analysis::rho_
protected

Definition at line 228 of file Analysis.h.

Referenced by Analysis().

int analysis::tools::Analysis::run_
protected

Definition at line 214 of file Analysis.h.

Referenced by Analysis(), and selectJson().

std::map<std::string, std::any > analysis::tools::Analysis::t_any_
protected

Definition at line 245 of file Analysis.h.

Referenced by event().

TChain* analysis::tools::Analysis::t_event_
protected

Definition at line 237 of file Analysis.h.

Referenced by Analysis(), event(), treeInit_(), and triggerResults().

TChain* analysis::tools::Analysis::t_evtfilter_
protected

Definition at line 236 of file Analysis.h.

Referenced by eventFilter().

TChain* analysis::tools::Analysis::t_genfilter_
protected

Definition at line 235 of file Analysis.h.

Referenced by generatorFilter(), and listGeneratorFilter().

TChain* analysis::tools::Analysis::t_triggerResults_
protected

Definition at line 238 of file Analysis.h.

Referenced by triggerResult(), and triggerResults().

std::map<std::string, std::string > analysis::tools::Analysis::t_type_
protected

Definition at line 246 of file Analysis.h.

Referenced by event().

TChain* analysis::tools::Analysis::t_xsection_
protected

Definition at line 234 of file Analysis.h.

Referenced by crossSection(), crossSections(), listCrossSections(), and luminosity().

std::string analysis::tools::Analysis::tag_
protected

Definition at line 183 of file Analysis.h.

std::map<std::string, TChain*> analysis::tools::Analysis::tree_
protected

Definition at line 242 of file Analysis.h.

Referenced by treeInit_().

std::map<std::string, bool> analysis::tools::Analysis::triggerResults_
protected

Definition at line 204 of file Analysis.h.

Referenced by triggerResult(), and triggerResults().

std::map<std::string, int> analysis::tools::Analysis::triggerResultsPS_
protected

Definition at line 205 of file Analysis.h.

Referenced by triggerPrescale(), and triggerResults().

std::map<std::string, double> analysis::tools::Analysis::xsections_
protected

Definition at line 203 of file Analysis.h.

Referenced by crossSection(), crossSections(), and listCrossSections().


The documentation for this class was generated from the following files: