本文整理汇总了C++中TBranch::GetEntry方法的典型用法代码示例。如果您正苦于以下问题:C++ TBranch::GetEntry方法的具体用法?C++ TBranch::GetEntry怎么用?C++ TBranch::GetEntry使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TBranch
的用法示例。
在下文中一共展示了TBranch::GetEntry方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: begin_in_file
void AnalysisModuleRunner::begin_in_file(const string & infile){
std::unique_ptr<TFile> file(TFile::Open(infile.c_str(), "read"));
if(read_trigger){
std::map<int, std::vector<std::string>> runid_to_triggernames;
// find triggernames for all runs in this file:
TTree * intree = dynamic_cast<TTree*>(file->Get("AnalysisTree"));
if(!intree) throw runtime_error("Did not find AnalysisTree in input file");
std::vector<std::string> trigger_names;
std::vector<std::string> *ptrigger_names = &trigger_names;
int runid = 0;
TBranch* runb = 0;
TBranch* tnb = 0;
intree->SetBranchAddress("run", &runid, &runb);
intree->SetBranchAddress("triggerNames", &ptrigger_names, &tnb);
if(runb==0 || tnb==0){
throw runtime_error("did not find branches for setting up trigger names");
}
int nentries = intree->GetEntries();
int last_runid = -1;
for(int i=0; i<nentries; ++i){
runb->GetEntry(i);
if(last_runid == runid) continue;
last_runid = runid;
assert(runid >= 1);
tnb->GetEntry(i);
if(!trigger_names.empty()){
runid_to_triggernames[runid] = trigger_names;
}
}
LOG_INFO("Found " << runid_to_triggernames.size() << " trigger infos in file '" << infile << "'");
helper->set_infile_triggernames(move(runid_to_triggernames));
}
}
示例2: PlotSignals
int PlotSignals(char *filename, int plfrom=0, int plto=100, int same=1) {
bragg_signal signal;
TFile *fin=new TFile(filename);
if (!fin->IsOpen()) {
std::cout << "file not found! " << std::endl;
return -1;
}
TTree *tree = (TTree*)fin->Get("bragg");
if (!tree) {
std::cout << "Bragg tree not found! " << std::endl;
return -2;
}
TBranch *br = tree->GetBranch("signals");
if (!br) {
std::cout << "Signal branch not found! " << std::endl;
return -3;
}
br->SetAddress(&signal);
int nev = br->GetEntries();
std::cout << "Number of events in file : " << nev << std::endl;
for (int i=plfrom; i<plto; i++) {
br->GetEntry(i);
plotSignal(signal,same);
}
return 0;
}
示例3:
void D3PDSelector::loadData(std::string key)
{
if (m_loaded.find(key) == m_loaded.end())
{
TBranch* toload = m_branches.find(key)->second;
toload->GetEntry(m_curentry);
m_loaded[key] = true;
}
}
示例4: TFile
void tv3Read2() {
//second read example illustrating how to read one branch only
TVector3 *v = 0;
TFile *f = new TFile("v3.root");
TTree *T = (TTree*)f->Get("T");
T->SetBranchAddress("v3",&v);
TBranch *by = T->GetBranch("fY");
TH1F *h2 = new TH1F("y","y component of TVector3",100,-5,20);
Int_t nentries = Int_t(T->GetEntries());
for (Int_t i=0;i<nentries;i++) {
by->GetEntry(i);
h2->Fill(v->y());
}
h2->Draw();
}
示例5: TreeR
void Tree::TreeR(){
Channel *ch;
f = new TFile(rootFile.c_str());
t = (TTree*)f->Get("testTree");
TBranch *b = t->GetBranch("channel");
t->SetBranchAddress("channel",&ch,&b);
Int_t nentries = t->GetEntries();
for(Int_t i = 0 ; i < nentries ; i++){
b->GetEntry(i);
std::cout<<"val : "<<ch->at(1)<<std::endl;
}
}
示例6:
void Tree::TreeR_V2(std::string bName, int entry){
//TFile *
// f = TFile::Open(rootFile.c_str(),"READ");
// if (!f) { return; }
// f->GetObject("testTree",t);
Channel *vpx = 0;
TBranch *bvpx = 0;
t->SetBranchAddress(bName.c_str(),&vpx,&bvpx);
Long64_t tentry = t->LoadTree(entry);
bvpx->GetEntry(tentry);
for (UInt_t j = 0; j < vpx->size(); ++j) {
std::cout<<"value : "<<vpx->at(j)<<" , ";
}
std::cout<<std::endl;
t->ResetBranchAddresses();
}
示例7: getFibreIndexTx
/*
* Extract the index of the transmitter from the fibre map
*/
int getFibreIndexTx(TTree *t, char *txswitch) {
int index = -1;
int len = t->GetEntries();
char fromSw[100];
TBranch *br = t->GetBranch("fromSw");
for (int i = 0; i < len; i++) {
br->GetEntry(i);
cout << fromSw <<endl;
if (strstr(fromSw, txswitch) != NULL) {
cout << "Found one\n";
index = i;
i = len;
}
}
return index;
}
示例8: h2fast
void h2fast(const char *url , Bool_t draw=kFALSE, Long64_t cachesize=10000000, Int_t learn=1) {
// gEnv->SetValue("TFile.DavixLog", 10);
// gDebug= 0x02;
TStopwatch sw;
TTree* T = NULL;
sw.Start();
Long64_t oldb = TFile::GetFileBytesRead();
TFile *f = TFile::Open(url);
if (!f || f->IsZombie()) {
printf("File h1big.root does not exist\n");
exit (-1);
}
// TTreeCacheUnzip::SetParallelUnzip(TTreeCacheUnzip::kEnable);
T= (TTree*)f->Get("h42");
Long64_t nentries = T->GetEntries();
T->SetCacheSize(cachesize);
TTreeCache::SetLearnEntries(learn);
TFileCacheRead *tpf = f->GetCacheRead();
//tpf->SetEntryRange(0,nentries);
if (draw) T->Draw("rawtr","E33>20");
else {
TBranch *brawtr = T->GetBranch("rawtr");
TBranch *bE33 = T->GetBranch("E33");
Float_t E33;
bE33->SetAddress(&E33);
for (Long64_t i=0;i<nentries;i++) {
T->LoadTree(i);
bE33->GetEntry(i);
if (E33 > 0) brawtr->GetEntry(i);
}
}
if (tpf) tpf->Print();
printf("Bytes read = %lld\n",TFile::GetFileBytesRead()-oldb);
printf("Real Time = %7.3f s, CPUtime = %7.3f s\n",sw.RealTime(),sw.CpuTime());
delete T;
delete f;
}
示例9: CountEvents
void CountEvents()
{
// Variables used to store the data
Int_t totalSize = 0; // Sum of data size (in bytes) of all events
Int_t eventSize = 0; // Size of the current event
TBranch *eventSizeBranch = 0; // Pointer to the event.fEventsize branch
// open the file
TFile *f = TFile::Open("http://lcg-heppkg.web.cern.ch/lcg-heppkg/ROOT/eventdata.root");
if (f == 0) {
// if we cannot open the file, print an error message and return immediatly
printf("Error: cannot open http://lcg-heppkg.web.cern.ch/lcg-heppkg/ROOT/eventdata.root!\n");
return;
}
// get a pointer to the tree
TTree *tree = (TTree *)f->Get("EventTree");
// To use SetBranchAddress() with simple types (e.g. double, int)
// instead of objects (e.g. std::vector<Particle>).
tree->SetMakeClass(1);
// Connect the branch "fEventSize" with the variable
// eventSize that we want to contain the data.
// While we are at it, ask the tree to save the branch
// in eventSizeBranch
tree->SetBranchAddress("fEventSize", &eventSize, &eventSizeBranch);
// First, get the total number of entries
Long64_t nentries = tree->GetEntries();
// then loop over all of them
for (Long64_t i=0;i<nentries;i++) {
// Load the data for TTree entry number "i" from branch
// fEventSize into the connected variable (eventSize):
eventSizeBranch->GetEntry(i);
totalSize += eventSize;
}
Int_t sizeInMB = totalSize/1024/1024;
printf("Total size of all events: %d MB\n", sizeInMB);
}
示例10: selectEleHZZRun1LegacyPaperIsoGivenIDWithZeeGammaPerFile
void selectEleHZZRun1LegacyPaperIsoGivenIDWithZeeGammaPerFile(const string inputfile, // input file
const string outputfile, // output directory
const Bool_t matchGen = kFALSE, // match to generator muons
Int_t dataType = 0, // del = 0, sel = 1, mc sig = -1, mc bkg = -2
Int_t DataEraInput = 2
) {
//--------------------------------------------------------------------------------------------------------------
// Settings
//==============================================================================================================
UInt_t DataEra = kDataEra_NONE;
if (DataEraInput == 1) DataEra = kDataEra_2011_MC;
if (DataEraInput == 2) DataEra = kDataEra_2012_MC;
if (DataEraInput == 11) DataEra = kDataEra_2011_Data;
if (DataEraInput == 12) DataEra = kDataEra_2012_Data;
//*****************************************************************************************
//Setup MVA
//*****************************************************************************************
EGammaMvaEleEstimator *eleIDMVA = new EGammaMvaEleEstimator();
vector<string> weightFiles;
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat1.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat2.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat3.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat4.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat5.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat6.weights.xml")).c_str());
eleIDMVA->initialize( "BDT", EGammaMvaEleEstimator::kNonTrig, kTRUE, weightFiles);
// mass region
Double_t massLo = 40;
Double_t massHi = 200;
//--------------------------------------------------------------------------------------------------------------
// Main analysis code
//==============================================================================================================
Double_t nProbes = 0;
//
// Set up output ntuple
//
TFile *outFile = new TFile(outputfile.c_str(),"RECREATE");
TTree *outTree = new TTree("Events","Events");
EffData data;
outTree->Branch("Events",&data.mass,"mass/F:pt:eta:phi:weight:q/I:npv/i:npu:pass:runNum:lumiSec:evtNum:rho/F");
TFile *infile=0;
TTree *eventTree=0;
// Data structures to store info from TTrees
higgsana::TEventInfo *info = new higgsana::TEventInfo();
TClonesArray *genparticleArr = new TClonesArray("higgsana::TGenParticle");
TClonesArray *electronArr = new TClonesArray("higgsana::TElectron");
TClonesArray *photonArr = new TClonesArray("higgsana::TPhoton");
TClonesArray *pfcandidateArr = new TClonesArray("higgsana::TPFCandidate");
TClonesArray *muonArr = new TClonesArray("higgsana::TMuon");
// Read input file and get the TTrees
cout << "Processing " << inputfile << "..." << endl;
infile = TFile::Open(inputfile.c_str(),"read");
assert(infile);
//********************************************************
// Good RunLumi Selection
//********************************************************
Bool_t hasJSON = kFALSE;
mithep::RunLumiRangeMap rlrm;
if (!matchGen) {
hasJSON = kTRUE;
rlrm.AddJSONFile("/afs/cern.ch/work/s/sixie/public/HZZ4l/auxiliar/2012/Cert_Full2012_53X_JSON.txt");
}
eventTree = (TTree*)infile->Get("Events"); assert(eventTree);
eventTree->SetBranchAddress("Info", &info); TBranch *infoBr = eventTree->GetBranch("Info");
eventTree->SetBranchAddress("Electron", &electronArr); TBranch *electronBr = eventTree->GetBranch("Electron");
eventTree->SetBranchAddress("Photon", &photonArr); TBranch *photonBr = eventTree->GetBranch("Photon");
eventTree->SetBranchAddress("Muon", &muonArr); TBranch *muonBr = eventTree->GetBranch("Muon");
eventTree->SetBranchAddress("PFCandidate", &pfcandidateArr); TBranch *pfcandidateBr = eventTree->GetBranch("PFCandidate");
cout << "NEvents = " << eventTree->GetEntries() << endl;
TBranch *genparticleBr;
if(matchGen) {
eventTree->SetBranchAddress("GenParticle", &genparticleArr);
genparticleBr = eventTree->GetBranch("GenParticle");
}
Double_t weight = 1;
// loop over events
for(UInt_t ientry=0; ientry<eventTree->GetEntries(); ientry++) {
if (ientry % 100000 == 0) cout << "Processed Event " << ientry << endl;
infoBr->GetEntry(ientry);
// check for certified runs
//.........这里部分代码省略.........
示例11: RunPidGetterQAEff
void RunPidGetterQAEff()
{
TString PidFrameworkDir = "/lustre/nyx/cbm/users/klochkov/soft/PidFramework/";
gSystem->Load( PidFrameworkDir + "build/libPid");
gStyle->SetOptStat(0000);
TFile *f2 = new TFile("pid_0.root");
TTree *PidTree = (TTree*) f2->Get("PidTree");
TofPidGetter *getter = new TofPidGetter();
TBranch *PidGet = PidTree->GetBranch("TofPidGetter");
PidGet->SetAddress(&getter);
PidGet->GetEntry(0);
Float_t ret[3];
TProfile *hEffP = new TProfile ("hEffP", "", 100, 0, 10);
TProfile *hEffPi = new TProfile ("hEffPi", "", 100, 0, 6);
TProfile *hEffK = new TProfile ("hEffK", "", 100, 0, 5);
TProfile *hEffPSigma = new TProfile ("hEffPSigma", "", 100, 0, 10);
TProfile *hEffPiSigma = new TProfile ("hEffPiSigma", "", 100, 0, 6);
TProfile *hEffKSigma = new TProfile ("hEffKSigma", "", 100, 0, 5);
TProfile2D *hEffPtYP = new TProfile2D ("hEffPtYP", "", 100, -2.5, 2.5, 100, 0, 4);
TProfile2D *hEffPtYK = new TProfile2D ("hEffPtYK", "", 100, -2.5, 2.5, 100, 0, 4);
TProfile2D *hEffPtYPi = new TProfile2D ("hEffPtYPi", "", 100, -2.5, 2.5, 100, 0, 4);
TString InTreeFileName = "/lustre/nyx/cbm/users/dblau/cbm/mc/UrQMD/AuAu/10AGeV/sis100_electron/SC_ON/2016_09_01/tree/11111.root";
TFile *InFile = new TFile(InTreeFileName);
TTree *InTree = (TTree*) InFile->Get("fDataTree");
DataTreeEvent* DTEvent;
InTree -> SetBranchAddress("DTEvent",&DTEvent);
int nevents = 100000;//InTree->GetEntries();
int outputstep = 100;
std::cout << "Entries = " << nevents << std::endl;
for (int j=0;j<nevents;j++)
{
if ( (j+1) % outputstep == 0) std::cout << j+1 << "/" << nevents << "\r" << std::flush;
InTree->GetEntry(j);
Int_t Nmc[3] = {100,100,100};
Int_t Ntof[3] = {0,0,0};
Int_t PdgCode[3] = {2212, 212, 211};
Double_t sigmas [3] = {0,0,0};
for (int i=0;i<DTEvent->GetNTracks(); i++)
{
TLorentzVector v;
DataTreeTrack* track = DTEvent -> GetTrack(i);
DataTreeMCTrack* mctrack = DTEvent -> GetMCTrack(i);
Double_t p = mctrack->GetPt() * TMath::CosH( mctrack->GetEta() );
if (track->GetTOFHitId() < 0)
{
if (mctrack->GetPdgId() == 2212 )
{
v.SetPtEtaPhiM (track->GetPt(0), track->GetEta(0), track->GetPhi(0), 0.9386);
hEffP->Fill ( p, 0 );
hEffPSigma->Fill ( p, 0 );
hEffPtYP -> Fill( v.Rapidity() - 1.52, v.Pt(), 0 );
}
if (mctrack->GetPdgId() == 321 )
{
v.SetPtEtaPhiM (track->GetPt(0), track->GetEta(0), track->GetPhi(0), 0.5);
hEffK->Fill ( p, 0 );
hEffKSigma->Fill ( p, 0 );
hEffPtYK -> Fill( v.Rapidity() - 1.52, v.Pt(), 0 );
}
if (mctrack->GetPdgId() == 211 )
{
v.SetPtEtaPhiM (track->GetPt(0), track->GetEta(0), track->GetPhi(0), 0.14);
hEffPi->Fill ( p, 0 );
hEffPiSigma->Fill ( p, 0);
hEffPtYPi -> Fill( v.Rapidity() - 1.52, v.Pt(), 0 );
}
continue;
}
//
DataTreeTOFHit* toftrack = DTEvent -> GetTOFHit(track->GetTOFHitId());
p = toftrack->GetP();
Double_t m2 = toftrack->GetMass2 ();
Bool_t cut = toftrack->GetBeta() > 0.1 && ( track->GetChiSq(0)/track->GetNDF(0) < 3 ) && p > 1.0 ;
if ( !cut ) continue;
getter->GetBayesProbability (m2, p, ret);
sigmas[0] = getter->GetSigmaProton (m2, p);
sigmas[1] = getter->GetSigmaKaon (m2, p);
sigmas[2] = getter->GetSigmaPion (m2, p);
// std::cout << "pdg = " << mctrack->GetPdgId() << " p = " << p << " Sp = " << sigmas[0] << " Sk = " << sigmas[1]<< " Spi = " << sigmas[2] << std::endl;
//.........这里部分代码省略.........
示例12: SkimNtuples
// Main macro function
//--------------------------------------------------------------------------------------------------
void SkimNtuples(const TString input = "skim.input")
{
gBenchmark->Start("SkimNtuples");
TString outfilename; // output of skimming
vector<TString> infilenames; // list input ntuple files to be skimmed
//
// parse input file
//
ifstream ifs;
ifs.open(input.Data());
assert(ifs.is_open());
string line;
getline(ifs,line);
outfilename = line;
while(getline(ifs,line)) { infilenames.push_back(line); }
ifs.close();
TTree::SetMaxTreeSize(kMaxLong64);
// Don't write TObject part of the objects
mithep::TEventInfo::Class()->IgnoreTObjectStreamer();
mithep::TElectron::Class()->IgnoreTObjectStreamer();
mithep::TDielectron::Class()->IgnoreTObjectStreamer();
mithep::TMuon::Class()->IgnoreTObjectStreamer();
mithep::TJet::Class()->IgnoreTObjectStreamer();
mithep::TPhoton::Class()->IgnoreTObjectStreamer();
mithep::TVertex::Class()->IgnoreTObjectStreamer();
// Data structures to store info from TTrees
mithep::TEventInfo *info = new mithep::TEventInfo();
TClonesArray *electronArr = new TClonesArray("mithep::TElectron");
TClonesArray *dielectronArr = new TClonesArray("mithep::TDielectron");
TClonesArray *muonArr = new TClonesArray("mithep::TMuon");
TClonesArray *pfJetArr = new TClonesArray("mithep::TJet");
TClonesArray *photonArr = new TClonesArray("mithep::TPhoton");
TClonesArray *pvArr = new TClonesArray("mithep::TVertex");
UInt_t nInputEvts = 0;
UInt_t nPassEvts = 0;
TFile* outfile = new TFile(outfilename, "RECREATE");
//
// Initialize data trees and structs
//
TTree *outEventTree = new TTree("Events","Events");
outEventTree->Branch("Info", &info);
outEventTree->Branch("Electron", &electronArr);
outEventTree->Branch("Dielectron", &dielectronArr);
outEventTree->Branch("Muon", &muonArr);
outEventTree->Branch("PFJet", &pfJetArr);
outEventTree->Branch("Photon", &photonArr);
outEventTree->Branch("PV", &pvArr);
for(UInt_t ifile=0; ifile<infilenames.size(); ifile++) {
cout << "Skimming " << infilenames[ifile] << "..." << endl;
TFile *infile = new TFile(infilenames[ifile]);
assert(infile);
TTree *eventTree = (TTree*)infile->Get("Events");
assert(eventTree);
// Set branch address to structures that will store the info
eventTree->SetBranchAddress("Info", &info); TBranch *infoBr = eventTree->GetBranch("Info");
eventTree->SetBranchAddress("Electron", &electronArr); TBranch *electronBr = eventTree->GetBranch("Electron");
eventTree->SetBranchAddress("Dielectron", &dielectronArr); TBranch *dielectronBr = eventTree->GetBranch("Dielectron");
eventTree->SetBranchAddress("Muon", &muonArr); TBranch *muonBr = eventTree->GetBranch("Muon");
eventTree->SetBranchAddress("PFJet", &pfJetArr); TBranch *pfJetBr = eventTree->GetBranch("PFJet");
eventTree->SetBranchAddress("Photon", &photonArr); TBranch *photonBr = eventTree->GetBranch("Photon");
eventTree->SetBranchAddress("PV", &pvArr); TBranch *pvBr = eventTree->GetBranch("PV");
for(UInt_t ientry=0; ientry<eventTree->GetEntries(); ientry++) {
infoBr->GetEntry(ientry);
electronArr->Clear(); electronBr->GetEntry(ientry);
dielectronArr->Clear(); dielectronBr->GetEntry(ientry);
muonArr->Clear(); muonBr->GetEntry(ientry);
pfJetArr->Clear(); pfJetBr->GetEntry(ientry);
photonArr->Clear(); photonBr->GetEntry(ientry);
pvArr->Clear(); pvBr->GetEntry(ientry);
nInputEvts++;
Bool_t keep = kFALSE;
if(dielectronArr->GetEntriesFast() > 0)
keep = kTRUE;
if(keep) {
outEventTree->Fill();
nPassEvts++;
}
}
}
outfile->Write();
//.........这里部分代码省略.........
示例13: SkimNtuples
//.........这里部分代码省略.........
outEventTree->Branch("Muon", &muonArr);
outEventTree->Branch("PFJet", &pfJetArr);
outEventTree->Branch("Photon", &photonArr);
outEventTree->Branch("PV", &pvArr);
for(UInt_t ifile=0; ifile<infilenames.size(); ifile++) {
cout << "Skimming " << infilenames[ifile] << "..." << endl;
TFile *infile = new TFile(infilenames[ifile]);
assert(infile);
TTree *eventTree = (TTree*)infile->Get("Events");
assert(eventTree);
// Set branch address to structures that will store the info
eventTree->SetBranchAddress("Info", &info); TBranch *infoBr = eventTree->GetBranch("Info");
TBranch *genBr = 0;
if(isGenPresent){
eventTree->SetBranchAddress("Gen" , &gen);
genBr = eventTree->GetBranch("Gen");
if( !genBr ){
printf("MC info is not found in signal MC file\n");
assert(0);
}
}
eventTree->SetBranchAddress("Electron", &electronArr); TBranch *electronBr = eventTree->GetBranch("Electron");
eventTree->SetBranchAddress("Dielectron", &dielectronArr); TBranch *dielectronBr = eventTree->GetBranch("Dielectron");
eventTree->SetBranchAddress("Muon", &muonArr); TBranch *muonBr = eventTree->GetBranch("Muon");
eventTree->SetBranchAddress("PFJet", &pfJetArr); TBranch *pfJetBr = eventTree->GetBranch("PFJet");
eventTree->SetBranchAddress("Photon", &photonArr); TBranch *photonBr = eventTree->GetBranch("Photon");
eventTree->SetBranchAddress("PV", &pvArr); TBranch *pvBr = eventTree->GetBranch("PV");
for(UInt_t ientry=0; ientry<eventTree->GetEntries(); ientry++) {
// for(UInt_t ientry=0; ientry< 100000; ientry++) { // For testing
infoBr->GetEntry(ientry);
if( isGenPresent)
genBr->GetEntry(ientry);
electronArr->Clear();
dielectronArr->Clear();
muonArr->Clear();
pfJetArr->Clear();
photonArr->Clear();
pvArr->Clear();
nInputEvts++;
Bool_t keep = kFALSE;
dielectronBr->GetEntry(ientry);
// Require at least one dielectron
if(dielectronArr->GetEntriesFast() > 0) {
// Apply cuts on the dielectron
int nDielectronsPass = 0;
for(Int_t i=0; i<dielectronArr->GetEntriesFast(); i++) {
mithep::TDielectron *dielectron = (mithep::TDielectron*)((*dielectronArr)[i]);
// Require at least one dielectron above 19 GeV and the other above 9 GeV
bool etCut = false;
if( (dielectron->scEt_1 > 19 && dielectron->scEt_2 > 9) ||
(dielectron->scEt_1 > 9 && dielectron->scEt_2 > 19) )
etCut = true;
// Require at least one dielectron to pass full ID
bool idCut = false;
// if( passSmurf(extractElectron(dielectron,1)) ||
// passSmurf(extractElectron(dielectron,2)) )
if( DYTools::energy8TeV == 1 ){
示例14: selectEleHZZHCP2012IDGivenIsoWithTightTagPerFile
void selectEleHZZHCP2012IDGivenIsoWithTightTagPerFile(const string inputfile, // input file
const string outputfile, // output directory
const Bool_t matchGen = kFALSE, // match to generator muons
Int_t dataType = 0, // del = 0, sel = 1, mc = -1
Int_t DataEraInput = 2
) {
gBenchmark->Start("selectEleMVAIsoTightGivenID");
//--------------------------------------------------------------------------------------------------------------
// Settings
//==============================================================================================================
UInt_t DataEra = kDataEra_NONE;
if (DataEraInput == 1) DataEra = kDataEra_2011_MC;
if (DataEraInput == 2) DataEra = kDataEra_2012_MC;
if (DataEraInput == 11) DataEra = kDataEra_2011_Data;
if (DataEraInput == 12) DataEra = kDataEra_2012_Data;
//*****************************************************************************************
//Setup MVA
//*****************************************************************************************
EGammaMvaEleEstimator *eleIDMVA = new EGammaMvaEleEstimator();
vector<string> weightFiles;
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat1.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat2.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat3.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat4.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat5.weights.xml")).c_str());
weightFiles.push_back((string(getenv("CMSSW_BASE"))+string("/src/HiggsAna/HZZ4l/data/ElectronIDMVAWeights/Electrons_BDTG_NonTrigV0_Cat6.weights.xml")).c_str());
eleIDMVA->initialize( "BDT", EGammaMvaEleEstimator::kNonTrig, kTRUE, weightFiles);
// mass region
Double_t massLo = 40;
Double_t massHi = 200;
//--------------------------------------------------------------------------------------------------------------
// Main analysis code
//==============================================================================================================
Double_t nProbes = 0;
//
// Set up output ntuple
//
TFile *outFile = new TFile(outputfile.c_str(),"RECREATE");
TTree *outTree = new TTree("Events","Events");
EffData data;
outTree->Branch("Events",&data.mass,"mass/F:pt:eta:phi:weight:q/I:npv/i:npu:pass:runNum:lumiSec:evtNum:rho/F");
TFile *infile=0;
TTree *eventTree=0;
// Data structures to store info from TTrees
higgsana::TEventInfo *info = new higgsana::TEventInfo();
higgsana::TGenInfo *gen = new higgsana::TGenInfo();
TClonesArray *electronArr = new TClonesArray("higgsana::TElectron");
TClonesArray *pfcandidateArr = new TClonesArray("higgsana::TPFCandidate");
TClonesArray *muonArr = new TClonesArray("higgsana::TMuon");
// Read input file and get the TTrees
cout << "Processing " << inputfile << "..." << endl;
infile = TFile::Open(inputfile.c_str(),"read");
assert(infile);
//********************************************************
// Good RunLumi Selection
//********************************************************
Bool_t hasJSON = kFALSE;
mithep::RunLumiRangeMap rlrm;
if (!matchGen) {
hasJSON = kTRUE;
rlrm.AddJSONFile("/afs/cern.ch/work/s/sixie/public/HZZ4l/auxiliar/2012/Cert_Full2012_53X_JSON.txt");
rlrm.AddJSONFile("/afs/cern.ch/work/s/sixie/public/HZZ4l/auxiliar/2011/2011Combined.json");
}
eventTree = (TTree*)infile->Get("Events"); assert(eventTree);
eventTree->SetBranchAddress("Info", &info); TBranch *infoBr = eventTree->GetBranch("Info");
eventTree->SetBranchAddress("Electron", &electronArr); TBranch *electronBr = eventTree->GetBranch("Electron");
eventTree->SetBranchAddress("Muon", &muonArr); TBranch *muonBr = eventTree->GetBranch("Muon");
eventTree->SetBranchAddress("PFCandidate", &pfcandidateArr); TBranch *pfcandidateBr = eventTree->GetBranch("PFCandidate");
cout << "NEvents = " << eventTree->GetEntries() << endl;
TBranch *genBr = 0;
if(matchGen) {
eventTree->SetBranchAddress("Gen", &gen);
genBr = eventTree->GetBranch("Gen");
}
Double_t weight = 1;
// loop over events
for(UInt_t ientry=0; ientry<eventTree->GetEntries(); ientry++) {
if (ientry % 100000 == 0) cout << "Processed Event " << ientry << endl;
infoBr->GetEntry(ientry);
// check for certified runs
//.........这里部分代码省略.........
示例15: computeAccSelZeeBinned
//.........这里部分代码省略.........
vector<Double_t> nEvtsv, nSelv;
vector<Double_t> nSelCorrv, nSelCorrVarv;
vector<Double_t> accv, accCorrv;
vector<Double_t> accErrv, accErrCorrv;
const baconhep::TTrigger triggerMenu("../../BaconAna/DataFormats/data/HLT_50nsGRun");
//
// loop through files
//
for(UInt_t ifile=0; ifile<fnamev.size(); ifile++) {
// Read input file and get the TTrees
cout << "Processing " << fnamev[ifile] << " ..." << endl;
infile = TFile::Open(fnamev[ifile]);
assert(infile);
eventTree = (TTree*)infile->Get("Events"); assert(eventTree);
eventTree->SetBranchAddress("Info", &info); TBranch *infoBr = eventTree->GetBranch("Info");
eventTree->SetBranchAddress("GenEvtInfo", &gen); TBranch *genBr = eventTree->GetBranch("GenEvtInfo");
eventTree->SetBranchAddress("GenParticle", &genPartArr); TBranch *genPartBr = eventTree->GetBranch("GenParticle");
eventTree->SetBranchAddress("Electron", &electronArr); TBranch *electronBr = eventTree->GetBranch("Electron");
eventTree->SetBranchAddress("PV", &vertexArr); TBranch *vertexBr = eventTree->GetBranch("PV");
nEvtsv.push_back(0);
nSelv.push_back(0);
nSelCorrv.push_back(0);
nSelCorrVarv.push_back(0);
//
// loop over events
//
for(UInt_t ientry=0; ientry<eventTree->GetEntries(); ientry++) {
genBr->GetEntry(ientry);
genPartArr->Clear(); genPartBr->GetEntry(ientry);
infoBr->GetEntry(ientry);
Int_t glepq1=-99;
Int_t glepq2=-99;
if (fabs(toolbox::flavor(genPartArr, BOSON_ID))!=LEPTON_ID) continue;
TLorentzVector *vec=new TLorentzVector(0,0,0,0);
TLorentzVector *lep1=new TLorentzVector(0,0,0,0);
TLorentzVector *lep2=new TLorentzVector(0,0,0,0);
toolbox::fillGen(genPartArr, BOSON_ID, vec, lep1, lep2,&glepq1,&glepq2,1);
if(vec->M()<MASS_LOW || vec->M()>MASS_HIGH) continue;
delete vec; delete lep1; delete lep2;
vertexArr->Clear();
vertexBr->GetEntry(ientry);
double npv = vertexArr->GetEntries();
Double_t weight=gen->weight;
if(doPU>0) weight*=h_rw->GetBinContent(h_rw->FindBin(info->nPUmean));
nEvtsv[ifile]+=weight;
// trigger requirement
if (!isEleTrigger(triggerMenu, info->triggerBits, kFALSE)) continue;
// good vertex requirement
if(!(info->hasGoodPV)) continue;
electronArr->Clear();
electronBr->GetEntry(ientry);
for(Int_t i1=0; i1<electronArr->GetEntriesFast(); i1++) {