本文整理汇总了C++中TEventList::GetSize方法的典型用法代码示例。如果您正苦于以下问题:C++ TEventList::GetSize方法的具体用法?C++ TEventList::GetSize怎么用?C++ TEventList::GetSize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TEventList
的用法示例。
在下文中一共展示了TEventList::GetSize方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetBEfficiency_InputHistograms
//.........这里部分代码省略.........
Double_t sample_weight = fSamples[i].xsection * fSamples[i].kfact * fSamples[i].lumi / (fSamples[i].nevents);
if(fVerbose>2) cout << "B-Efficiency: looping over " << fSamples[i].name << endl;
if(fVerbose>2) cout << " sample has weight " << sample_weight << " and " << fSamples[i].tree->GetEntries() << " entries" << endl;
if(fVerbose>2 && fSamples[i].tree->GetEntries()==0) cout << "skip sample, has no entries" << endl;
if(fSamples[i].tree->GetEntries()==0) continue;
MT2tree* fMT2tree = new MT2tree();
fSamples[i].tree->SetBranchAddress("MT2tree", &fMT2tree);
Long64_t nentries = fSamples[i].tree->GetEntries();
Long64_t nbytes = 0, nb = 0;
int nev =0;
TString myCuts = cuts;
if(HTskim) myCuts = myCuts + " && misc.HT>750";
if(METskim) myCuts = myCuts + " && misc.HT<=750 && misc.MET>200";//METskim excluding HTskim
/*
if( fSamples[i].type=="data" && fSamples[i].sname=="EE-Data") { myCuts += " && " + triggerEE; }//cuts to be aplied only on data
else if( fSamples[i].type=="data" && fSamples[i].sname=="EMu-Data") { myCuts += " && " + triggerEMu; }//cuts to be aplied only on data
else if( fSamples[i].type=="data" && fSamples[i].sname=="MuMu-Data") { myCuts += " && " + triggerMuMu; } //cuts to be aplied only on data
else if(fSamples[i].type=="data") {cout << "data not usuable" << " type " << fSamples[i].type << " Sname " << fSamples[i].sname << endl; continue; }//not
*/
if( fSamples[i].type=="data") { myCuts += " && " + trigger; }
cout << "Cuts for Flow: " << myCuts << endl;
fSamples[i].tree->Draw(">>selList", myCuts);
TEventList *myEvtList = (TEventList*)gDirectory->Get("selList");
fSamples[i].tree->SetEventList(myEvtList);
int counter=0;
cout << "Filtering done, size=" <<myEvtList->GetN() << endl;
if(myEvtList->GetSize()==0) continue;
while(myEvtList->GetEntry(counter++) !=-1){
int jentry = myEvtList->GetEntry(counter-1);
nb = fSamples[i].tree->GetEntry(jentry); nbytes += nb;
fSamples[i].tree->SetBranchAddress("MT2tree", &fMT2tree);
if ( fVerbose>2 && counter % 50000 == 0 ) cout << "+++ Proccessing event " << counter << endl;
//if((fSamples[i].sname!="VVV"&&fSamples[i].sname!="TTbarV" && fSamples[i].type!="susy"&&sampletype!="Stop") && fMT2tree->misc.HBHENoiseFlag!=0 ) continue;//test
//if((fSamples[i].sname!="VVV"&&fSamples[i].sname!="TTbarV" && fSamples[i].type!="susy"&&sampletype!="Stop") && fMT2tree->misc.hcalLaserEventFlag!=0) continue;//test
Double_t weight = sample_weight;
if (!fMT2tree->misc.isData ) weight = weight * fMT2tree->pileUp.Weight; // pile-up reweighting for MC
/* Bool_t recoedee = false;// exact 2 ele, 0 muo
Bool_t recoedemu = false;// exact 1 ele, 1 muo
Bool_t recoedmumu = false;// exact 0 ele, 2 muo
//change this - might have some inefficiencies - three leptons with one not passing IDMedium==1
//20-20 selection --> third lepton is 10 GeV
if(fMT2tree->NEles>=2 &&fMT2tree->ele[0].lv.Pt()>20&&fMT2tree->ele[1].lv.Pt()>20&&fMT2tree->ele[2].lv.Pt()<20&&(fMT2tree->NMuons==0||fMT2tree->muo[0].lv.Pt()<10) && fMT2tree->ele[0].IDMedium==1 && fMT2tree->ele[1].IDMedium==1) recoedee = true;
if(fMT2tree->NMuons>=2&&fMT2tree->muo[0].lv.Pt()>20&&fMT2tree->muo[1].lv.Pt()>20&&fMT2tree->muo[2].lv.Pt()<10&&(fMT2tree->NEles ==0||fMT2tree->ele[0].lv.Pt()<10)) recoedmumu = true;
if(fMT2tree->NMuons>=1&&fMT2tree->muo[0].lv.Pt()>20&&fMT2tree->muo[1].lv.Pt()<10&&fMT2tree->NEles>=1 &&fMT2tree->ele[0].lv.Pt()>20&&fMT2tree->ele[1].lv.Pt()<10 && fMT2tree->ele[0].IDMedium==1) recoedemu = true;//XXX change emu to 20/20 selection, left ee,mumu at 20/10 for now
//id cuts?
Bool_t recoedosee = false;// opposite sign
Bool_t recoedosemu = false;// opposite sign
Bool_t recoedosmumu = false;// opposite sign
if(recoedee && (fMT2tree->ele[0].Charge)*(fMT2tree->ele[1].Charge)==(-1)) recoedosee = true;
if(recoedemu && (fMT2tree->ele[0].Charge)*(fMT2tree->muo[0].Charge)==(-1)) recoedosemu = true;
if(recoedmumu && (fMT2tree->muo[0].Charge)*(fMT2tree->muo[1].Charge)==(-1)) recoedosmumu = true;
Bool_t recoedeenZ = false;// off Z
Bool_t recoedemunZ = false;// off Z -> is not requirement, so this variable should be useless
Bool_t recoedmumunZ = false;// off Z
示例2: MakeDataFile
//.........这里部分代码省略.........
TString trigger = triggerStream.str().c_str();
load(samples.Data());
int counterAll = 0;
for(size_t i = 0; i < fSamples.size(); ++i){
string sampletype = (string)fSamples[i].type;
if(sampletype!="data") continue;//run only over data - extendable to MC
Double_t sample_weight = fSamples[i].xsection * fSamples[i].kfact * fSamples[i].lumi / (fSamples[i].nevents*fSamples[i].PU_avg_weight);
if(fVerbose>2) cout << "ZnunuNumbers: looping over " << fSamples[i].name << " added in " << sampletype << endl;
if(fVerbose>2) cout << " sample has weight " << sample_weight << " and " << fSamples[i].tree->GetEntries() << " entries" << endl;
if(fVerbose>2 && fSamples[i].tree->GetEntries()==0) cout << "skip sample, has no entries" << endl;
if(fSamples[i].tree->GetEntries()==0) continue;
MT2tree* fMT2tree = new MT2tree();
fSamples[i].tree->SetBranchAddress("MT2tree", &fMT2tree);
Long64_t nentries = fSamples[i].tree->GetEntries();
Long64_t nbytes = 0, nb = 0;
int nev =0;
TString myCuts = cuts;// + "&&" + basecuts;
if( fSamples[i].type=="data") myCuts += " && " + trigger; //cuts to be aplied only on data
cout << "Cuts for Flow: " << myCuts << endl;
fSamples[i].tree->Draw(">>selList", myCuts);
TEventList *myEvtList = (TEventList*)gDirectory->Get("selList");
fSamples[i].tree->SetEventList(myEvtList);
int counter=0;
cout << "Filtering done, size=" <<myEvtList->GetN() << endl;
if(myEvtList->GetSize()==0) continue;
*fLogStream << "Sample " << fSamples[i].name << endl;
//run over all selected events
while(myEvtList->GetEntry(counter++) !=-1){
int jentry = myEvtList->GetEntry(counter-1);
nb = fSamples[i].tree->GetEntry(jentry); nbytes += nb;
fSamples[i].tree->SetBranchAddress("MT2tree", &fMT2tree);
if ( fVerbose>2 && counter % 5000 == 0 ) cout << "+++ Proccessing event " << counter << endl;
string sHT;//HT region
if(fMT2tree->misc.HT<450.) sHT = "_HTge0";
else if(fMT2tree->misc.HT<750.) sHT = "_lowHT";
else if(fMT2tree->misc.HT<1200.)sHT = "_mediumHT";
else sHT = "_highHT";
string ssignal;//topological region
if(fMT2tree->NJetsIDLoose40 == 2 && fMT2tree->NBJets40CSVM == 0) ssignal = "_2j0b";
if(fMT2tree->NJetsIDLoose40 == 2 && fMT2tree->NBJets40CSVM >= 1) ssignal = "_2j1to2b";
if(fMT2tree->NJetsIDLoose40 >= 3 && fMT2tree->NJetsIDLoose40 <= 5 && fMT2tree->NBJets40CSVM == 0) ssignal = "_3to5j0b";
if(fMT2tree->NJetsIDLoose40 >= 3 && fMT2tree->NJetsIDLoose40 <= 5 && fMT2tree->NBJets40CSVM == 1) ssignal = "_3to5j1b";
if(fMT2tree->NJetsIDLoose40 >= 3 && fMT2tree->NJetsIDLoose40 <= 5 && fMT2tree->NBJets40CSVM == 2) ssignal = "_3to5j2b";
if( fMT2tree->NBJets40CSVM >= 3) ssignal = "_3b";
if(fMT2tree->NJetsIDLoose40 >= 6 && fMT2tree->NBJets40CSVM == 0) ssignal = "_6j0b";
if(fMT2tree->NJetsIDLoose40 >= 6 && fMT2tree->NBJets40CSVM == 1) ssignal = "_6j1b";
if(fMT2tree->NJetsIDLoose40 >= 6 && fMT2tree->NBJets40CSVM == 2) ssignal = "_6j2b";
string hh = sHT + ssignal;
histos[(string)"MT2" + hh]->Fill(fMT2tree->misc.MT2);//fill histogram
if(fMT2tree->misc.MT2>histos[(string)"MT2" + hh]->GetBinLowEdge(1)){
if(sHT=="_lowHT" && (fMT2tree->trigger.HLT_PFHT350_PFMET100_v3==1||fMT2tree->trigger.HLT_PFHT350_PFMET100_v4==1||fMT2tree->trigger.HLT_PFHT350_PFMET100_v5==1||fMT2tree->trigger.HLT_PFHT350_PFMET100_v6==1||fMT2tree->trigger.HLT_PFHT350_PFMET100_v7==1 || fMT2tree->trigger.HLT_PFNoPUHT350_PFMET100_v1==1 || fMT2tree->trigger.HLT_PFNoPUHT350_PFMET100_v3==1 || fMT2tree->trigger.HLT_PFNoPUHT350_PFMET100_v4==1 ) ) *fLogStream << "HTMHT ";
else if(sHT=="_lowHT") *fLogStream << "MET ";
示例3: PrintOutEvents
//this code create the so-called 'PrintOuts' as done with the MT2tree::PrintOut() function
void PrintOutEvents(){
bool savetofile = true;//save the printout to the file PrintOut.log, default = true
bool onlyData = true; //run only over data, default = true
// TString samples = "/shome/haweber/MT2Analysis_8TeV/Code/MT2AnalysisCode/RootMacros/samples/samples_MET_filter.dat";//only dummy
// TString samples = "/shome/haweber/MT2Analysis_8TeV/Code/MT2AnalysisCode/RootMacros/samples/samples_HT_filter.dat";//only dummy
TString samples = "samples/samples_HTandMET_filter.dat";
//event selection for which you want to have the printout - complicated stuff can also be done later
std::ostringstream cutStream;
std::ostringstream cutStreamBase;
cutStream << " "
// << "NBJets40CSVM >= 3" << "&&"
<< "NJetsIDLoose40 >= 2" << "&&"
<< "NEles+NMuons+NTausIDLoose3Hits ==0"<< "&&"
// << "misc.MT2>=250" << "&&"
<< "misc.Jet0Pass ==1" << "&&"
<< "misc.Jet1Pass ==1" << "&&"
<< "misc.Vectorsumpt < 70";
cutStream << "&& misc.MinMetJetDPhi4Pt40 >0.3";
// cutStream << "&&misc.HT<750&&misc.HT>=450&&misc.MET>200";
// cutStream << "&&misc.HT>=750&&misc.MET>30";
cutStream << "&&((misc.HT<750&&misc.HT>=450&&misc.MET>200)||(misc.HT>=750&&misc.MET>30))";
//Higgs
// cutStream <<"&&NJetsIDLoose40 >= 4"<<"&&"
// <<"NBJetsCSVM>=2"<<"&&"
// <<"GetSelBBMinv()>250";
cutStreamBase << " "
<< "misc.PassJet40ID ==1" << "&&"
<< "(misc.HBHENoiseFlag == 0 || misc.ProcessID==10)" << "&&" // for rare SM samples
<< "misc.CSCTightHaloIDFlag == 0" << "&&"
<< "misc.trackingFailureFlag==0" << "&&"
<< "misc.eeBadScFlag==0" << "&&"
<< "misc.EcalDeadCellTriggerPrimitiveFlag==0" << "&&"
<< "misc.TrackingManyStripClusFlag==0" << "&&"
<< "misc.TrackingTooManyStripClusFlag==0" << "&&"
<< "misc.TrackingLogErrorTooManyClustersFlag==0" << "&&"
<< "misc.CrazyHCAL==0";
cutStreamBase << "&&misc.MET/misc.CaloMETRaw<=2.";
cutStreamBase << "&&TOBTECTagger<=8&&ExtraBeamHaloFilter==0";// ONLY ON DATA
TString cuts = cutStream.str().c_str();
TString basecuts = cutStreamBase.str().c_str();
load(samples.Data());
//if have extremely many events can only select a random subset of those
TRandom3 *random = new TRandom3(0);//somehow truly random with this seed
vector<int> randvec; randvec.clear();
for(int i =0; i<40;++i)
randvec.push_back(random->Integer(7750));
delete random;
sort(randvec.begin(), randvec.end());
//for(int i=0; i<randvec.size();++i) cout << "randvec["<<i<<"]="<<randvec[i] << endl;
int counter1 = 0; int counter2 = 0;
//don't run events twice - this vector makes that sure (in case event is in both MET and HT trigger stream)
vector<pair<int,pair<int,int> > > rls; rls.clear();
for(size_t i = 0; i < fSamples.size(); ++i){
if(onlyData && fSamples[i].type!="data") continue;
MT2tree* fMT2tree = new MT2tree();
fSamples[i].tree->SetBranchAddress("MT2tree", &fMT2tree);
Long64_t nentries = fSamples[i].tree->GetEntries();
Long64_t nbytes = 0, nb = 0;
int nev =0;
TString myCuts = cuts + "&&" + basecuts;
//if( fSamples[i].type=="data") myCuts += " && " + trigger; //cuts to be aplied only on data
cout << "sample " << fSamples[i].name << endl;
cout << "Cuts for Flow: " << myCuts << endl;
fSamples[i].tree->Draw(">>selList", myCuts);
TEventList *myEvtList = (TEventList*)gDirectory->Get("selList");
fSamples[i].tree->SetEventList(myEvtList);
int counter=0;
cout << "Filtering done, size=" <<myEvtList->GetN() << endl;
if(myEvtList->GetSize()==0) continue;
//run over selected events
while(myEvtList->GetEntry(counter++) !=-1){
int jentry = myEvtList->GetEntry(counter-1);
nb = fSamples[i].tree->GetEntry(jentry); nbytes += nb;
fSamples[i].tree->SetBranchAddress("MT2tree", &fMT2tree);
//implementation of running over random subset
// if(counter1==randvec[counter2]){
// ++counter2;
// fMT2tree->PrintOut(savetofile);
// }
pair <int,int> dummy1(fMT2tree->misc.LumiSection,fMT2tree->misc.Event);
pair <int,pair<int,int> > dummy(fMT2tree->misc.Run, dummy1);
//.........这里部分代码省略.........