本文整理汇总了C++中TChain::SetCacheSize方法的典型用法代码示例。如果您正苦于以下问题:C++ TChain::SetCacheSize方法的具体用法?C++ TChain::SetCacheSize怎么用?C++ TChain::SetCacheSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TChain
的用法示例。
在下文中一共展示了TChain::SetCacheSize方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawdEdxResolExample
void DrawdEdxResolExample(){
/// Example analysis to make an space point resolution study
TChain * chain = AliXRDPROOFtoolkit::MakeChain("trackerSimul.list", "simulTrack",0,100);
chain->SetCacheSize(10000000000);
//
// 1.) Qmax/Qtot as function of the input ionization density
//
chain->Draw("tr.CookdEdxDmax(0,0.6,1,0,1,0)/tr.CookdEdxDtot(0,0.6,1,0,1,0):tr.fMNprim>>hisQtotMax(10,10,50)","","prof",10000);
//
// 2.) Non linearity due to the truncation Qtot_{60%}/Qtot 100%
//
chain->Draw("tr.CookdEdxDtot(0,0.6,1,0,1,0)/tr.CookdEdxDtot(0,0.99,1,0,1,0):tr.fMNprim>>hisQtot60100(10,10,50)","","prof",10000);
//
// 3.)
//
chain->Draw("tr.CookdEdxDtot(0,0.6,1,0,1,0)/tr.fMNprim:tr.fMNprim>>profQtot60(10,10,50)","","prof",10000);
chain->Draw("tr.CookdEdxDtot(0,0.99,1,0,1,0)/tr.fMNprim:tr.fMNprim>>profQtot100(10,10,50)","","profsame",10000);
}
示例2: runGangaTTreeCache
//to run in ROOT: .x runD3PDSelector.C
void runGangaTTreeCache() {
cout << "Grid run, TTreeCache Enabled" <<endl;
char *rpath = getenv( "PWD" );
std::string filename = "./input.txt";
if (!( rpath == 0 )) { // if ENV-var not set use default
std::string path(rpath);
filename = path+"/input.txt";
}
cout << "Reading input file "<<filename<<endl;
TChain *c = new TChain("susy");
// TFileCollection* fc = new TFileCollection("mylist", "mylist",filename);
// c->AddFileInfoList((TCollection*)fc->GetList());
std::string argStr;
char *filechar = filename.c_str();
std::ifstream ifs(filechar);
std::vector<std::string> fileList;
// split by '\n'
int nfiles = 0;
while (std::getline(ifs,argStr)) {
for (size_t i=0,n; i <= argStr.length(); i=n+1) {
n = argStr.find_first_of('\n',i);
if (n == std::string::npos)
n = argStr.length();
TString tmp = argStr.substr(i,n-i);//std::string
nfiles++;
cout << "Adding file "<<tmp<<" nb "<<nfiles<<endl;
c->Add(tmp);
}
}
int nentries = c->GetEntries();
std::cout << "Total number of entries in chain (after all the files) " << c->GetEntries() << std::endl;
// GD use TTreeCache (disabled by default in ROOT5.28)
//c->SetCacheSize(100000000);
// GD DO NOT use TTreeCache (enabled by default in ROOT5.26)
c->SetCacheSize(0);
//c->SetProof();
c->Process("D3PDSelector.C+O");
// Create AthSummary.txt for the pilot
ofstream outf("AthSummary.txt");
// outf << "Files read: " << fc->GetNFiles() << std::endl;
outf << "Files read: " << nfiles << std::endl;
outf << "Events Read: " << nentries << std::endl;
outf << "{ \"events\":{\"read\":" << nentries << "} " << "}" << std::endl;
outf.close();
system("cp AthSummary.txt ..");
c->Delete();
cout << "All done, quitting ROOT..."<<endl;
//quit root
gApplication->Terminate();
}
示例3: main
int main(int argc, char *argv[]) {
ProcInfo_t info;
TStopwatch timer;
timer.Start();
useInFile = false;
useList = false;
deb = false;
cout << endl;
cout << " ------------------------------" << endl;
cout << " | |" << endl;
cout << " | Start executing RunSUSY |" << endl;
cout << " | |" << endl;
cout << " ------------------------------" << endl;
cout << endl;
gSystem->Exec("TEMPDATE=`date`; echo 'RunSUSY:' $TEMPDATE");
cout << endl;
parseCommandLine(argc,argv);
SUSYAna *susy = 0;
TString s(inFile);
TString type(ag);
TString outf(outFile);
if (type == "\0") {
cout << "RunSUSY: You MUST provide the input type !" << endl;
usage();
}
if (outf == "\0") {
cout << "RunSUSY: You MUST provide an output file !" << endl;
usage();
}
if (useList) {
cout << "RunSUSY: Collecting input files" << endl;
int nfiles;
char tex[100];
TString ttex;
TChain *fChain;
FILE *filelist;
filelist = fopen(inFile, "r");
nfiles = 0;
fChain = new TChain("ACSkimAnalysis/allData");
while( !feof(filelist) ) {
fscanf(filelist, "%s\n", tex);
ttex = tex;
if (ttex.Contains("pnfs"))
ttex = "dcache:" + ttex;
if( strcmp(tex,"//")==0 ) break;
cout << " " << ttex << endl;
fChain->SetCacheSize(0);
fChain->Add(ttex);
nfiles++;
// if( nfiles==nmax ) break;
}
cout << " " << "(" << nfiles << " files)" << endl;
susy = new SUSYAna(fChain);
}
else if (useInFile) {
TFile *f;
if (s.Contains("pnfs")) {
s = "dcache:" + s;
f = TFile::Open(s);
}
else
f = new TFile(inFile);
TTree *tree = (TTree*)f->Get("ACSkimAnalysis/allData");
susy = new SUSYAna(tree);
}
else {
cout << "RunSUSY: You MUST provide the input files or file lists !" << endl;
usage();
}
cout << "RunSUSY: Starting event loop" << endl;
gSystem->GetProcInfo(&info);
cout << "RunSUSY: resident mem (MB) : " << info.fMemResident/1000. << endl;
cout << "RunSUSY: virtual mem (MB) : " << info.fMemVirtual/1000. << endl;
cout << endl;
susy->Loop(outf, deb, type);
timer.Stop();
gSystem->GetProcInfo(&info);
//.........这里部分代码省略.........
示例4: hggfitmceerr
void hggfitmceerr(double nommass=123., double tgtr=1., int ijob=0) {
//gSystem->cd("/scratch/bendavid/root/bare/fitplotsJun10test/");
int seed = 65539+ijob+1;
TString dirname = "/scratch/bendavid/root/bare/hggfiteerrtestall_large2/";
gSystem->mkdir(dirname,true);
gSystem->cd(dirname);
//nommass=150.;
// gSystem->cd("/scratch/bendavid/root/bare/fitplotsJun8_150_2x/");
gRandom->SetSeed(seed);
RooRandom::randomGenerator()->SetSeed(seed);
// TFile *fin = TFile::Open("/home/mingyang/cms/hist_approval/hgg-2013Moriond/merged/hgg-2013Moriond_s12-h150gg-gf-v7a_noskim.root");
// TDirectory *hdir = (TDirectory*)fin->FindObjectAny("PhotonTreeWriterPresel");
// TTree *htree = (TTree*)hdir->Get("hPhotonTree");
// TFile *fdin = TFile::Open("/home/mingyang/cms/hist/hgg-2013Moriond/merged/hgg-2013Moriond_r12_ABCD.root");
// TDirectory *ddir = (TDirectory*)fdin->FindObjectAny("PhotonTreeWriterPresel");
// TTree *dtree = (TTree*)ddir->Get("hPhotonTree");
//TCut selcut = "(ph1.pt > (mass/3.0) && ph2.pt > (mass/4.0) && mass>100. && mass<180. && ph1.idmva>-0.2 && ph2.idmva>-0.2)";
TCut selcut = "(ph1.pt > (mass/3.0) && ph2.pt > (mass/4.0) && mass>100. && mass<180. && ph1.idmva>-0.2 && ph2.idmva>-0.2)";
//TCut selweight = "xsecweight(procidx)*puweight(numPU,procidx)";
TCut selweight = "xsecweight(procidx)*mcweight*kfact(procidx,ph1.ispromptgen,ph2.ispromptgen)";
TCut sigFcut = "(procidx==0 || procidx==3)";
TCut sigVcut = "(procidx==1 || procidx==2)";
TCut bkgPPcut = "(procidx==4)";
TCut bkgPFcut = "(procidx==5 || procidx==6)";
TCut bkgFFcut = "(procidx==7 || procidx==8)";
TCut bkgcut = "(procidx>3)";
TCut bkgcutnoq = "(procidx>3 && procidx<7)";
TCut prescalenone = "(1==1)";
TCut evenevents = "(evt%2==0)";
TCut oddevents = "(evt%2==1)";
TCut prescale10 = "(evt%10==0)";
TCut prescale25 = "(evt%25==0)";
TCut prescale50 = "(evt%50==0)";
TCut prescale100 = "(evt%100==0)";
TCut fcut = prescale50;
float xsecs[50];
//TCut selcutsingle = "ph.pt>25. && ph.isbarrel && ph.ispromptgen";
//TCut selcutsingle = "ph.pt>25.&& ph.ispromptgen";
TCut selcutsingle = "ph.genpt>16.&& ph.ispromptgen";
TCut selweightsingle = "xsecweight(procidx)";
// TChain *tree = new TChain("RunLumiSelectionMod/MCProcessSelectionMod/HLTModP/GoodPVFilterMod/PhotonMvaMod/JetPub/JetCorrectionMod/SeparatePileUpMod/ElectronIDMod/MuonIDMod/PhotonPairSelectorPresel/PhotonTreeWriterPresel/hPhotonTreeSingle");
// tree->Add("/home/mingyang/cms/hist/hgg-2013Final8TeV/merged/hgg-2013Final8TeV_s12-diphoj-v7n_noskim.root");
TChain *tree = new TChain("RunLumiSelectionMod/MCProcessSelectionMod/HLTModP/GoodPVFilterMod/PhotonMvaMod/PhotonIDModPresel/PhotonTreeWriterSingle/hPhotonTreeSingle");
tree->Add("/home/mingyang/cms/hist/hgg-2013Final8TeV_reg_trans/merged/hgg-2013Final8TeV_reg_trans_s12-pj20_40-2em-v7n_noskim.root");
tree->Add("/home/mingyang/cms/hist/hgg-2013Final8TeV_reg_trans/merged/hgg-2013Final8TeV_reg_trans_s12-pj40-2em-v7n_noskim.root");
xsecs[0] = 0.001835*81930.0;
xsecs[1] = 0.05387*8884.0;
initweights(tree,xsecs,1.);
double weightscale = xsecweights[1];
xsecweights[0] /= weightscale;
xsecweights[1] /= weightscale;
tree->SetCacheSize(64*1024*1024);
RooRealVar energy("energy","ph.e",0);
RooRealVar sceta("sceta","ph.sceta",0.);
RooRealVar idmva("idmva","ph.idmva",0.,-1.,1.);
RooRealVar eerr("eerr","(ph.isbarrel + 0.5*!ph.isbarrel)*ph.eerr/ph.e",0.);
RooRealVar evt("evt","evt",0.);
RooArgList vars;
vars.add(energy);
vars.add(sceta);
//vars.add(idmva);
RooArgList condvars(vars);
//.........这里部分代码省略.........
示例5: MuMcPrVKFV2012
//.........这里部分代码省略.........
TString Title(Plots[p].Title); Title += " for "; Title += HCases[h].Title; Title += " vertex";
if (p < 2) hists[h][p] = new TH2D(Name, Title, nMcRecMult, xMult.GetArray(), nMcRecMult, xMult.GetArray());
else if (p == 2) hists[h][p] = new TH1D(Name, Title, nMcRecMult, xMult.GetArray());
}
}
TNtuple *VertexG = new TNtuple("VertexG", "good vertex & global params info", vnames);
TNtuple *VertexB = new TNtuple("VertexB", "bad vertex & global params info", vnames);
// ----------------------------------------------
StMuDstMaker *maker = new StMuDstMaker(0, 0, "", file, "st:MuDst.root", 1e9); // set up maker in read mode
// 0,0 this mean read mode
// dir read all files in this directory
// file bla.lis real all file in this list, if (file!="") dir is ignored
// filter apply filter to filenames, multiple filters are separated by ':'
// 10 maximum number of file to read
maker->SetStatus("*", 0);
std::vector<std::string> activeBranchNames = {
"MuEvent",
"PrimaryVertices",
"StStMuMcVertex",
"StStMuMcTrack"
};
// Set Active braches
for (const auto& branchName : activeBranchNames)
maker->SetStatus(branchName.c_str(), 1);
TChain *tree = maker->chain();
Long64_t nentries = tree->GetEntries();
nevent = TMath::Min(nevent, nentries);
std::cout << nentries << " events in chain " << nevent << " will be read." << std::endl;
tree->SetCacheSize(-1); //by setting the read cache to -1 we set it to the AutoFlush value when writing
tree->SetCacheLearnEntries(1); //one entry is sufficient to learn
tree->SetCacheEntryRange(0, nevent);
for (Long64_t ev = 0; ev < nevent; ev++) {
if (maker->Make()) break;
StMuDst *muDst = maker->muDst(); // get a pointer to the StMuDst class, the class that points to all the data
StMuEvent *muEvent = muDst->event(); // get a pointer to the class holding event-wise information
int referenceMultiplicity = muEvent->refMult(); // get the reference multiplicity
TClonesArray *PrimaryVertices = muDst->primaryVertices();
int nPrimaryVertices = PrimaryVertices->GetEntriesFast();
TClonesArray *MuMcVertices = muDst->mcArray(0);
int nMuMcVertices = MuMcVertices->GetEntriesFast();
TClonesArray *MuMcTracks = muDst->mcArray(1);
int nMuMcTracks = MuMcTracks->GetEntriesFast();
if ( nevent >= 10 && ev % int(nevent*0.1) == 0 )
{
std::cout << "Event #" << ev << "\tRun\t" << muEvent->runId()
<< "\tId: " << muEvent->eventId()
<< " refMult= " << referenceMultiplicity
<< "\tPrimaryVertices " << nPrimaryVertices
<< "\t" << " " << nMuMcVertices
<< "\t" << " " << nMuMcTracks
<< std::endl;
}
// const Double_t field = muEvent->magneticField()*kilogauss;
if (! nMuMcVertices || ! nMuMcTracks || nPrimaryVertices <= 0) {
示例6: makesimpleplot
void makesimpleplot(void)
{
// set_plot_style();
TChain *chain = new TChain("OSTwoLepAna/summaryTree");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_1.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_10.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_11.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_12.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_13.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_14.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_15.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_16.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_17.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_18.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_19.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_2.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_20.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_3.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_4.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_5.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_6.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_7.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_8.root");
chain->Add("root://eoscms.cern.ch//eos/cms/store/user/muell149/ttH-leptons_Skims/acceptance_study_v5/ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8/crab_ttH125/150916_225227/0000/multilep_michaeltest_deleteme_9.root");
int chainentries = chain->GetEntries();
cout << "tree entries: " << chainentries << endl;
Int_t cachesize = 100000000; //100 MBytes
chain->SetCacheSize(cachesize); //<<<
chain->SetCacheLearnEntries(20);
double mcwgt_intree = -999.;
double wgt_intree = -999.;
int hDecay_intree = -999;
int eventNum_intree = -999;
vector<ttH::GenParticle> *pruned_genParticles_intree = 0;
vector<ttH::Electron> *raw_electrons_intree = 0;
vector<ttH::Electron> *preselected_electrons_intree = 0;
vector<ttH::Electron> *tight_electrons_intree = 0;
vector<ttH::Muon> *raw_muons_intree = 0;
vector<ttH::Muon> *preselected_muons_intree = 0;
vector<ttH::Muon> *tight_muons_intree = 0;
vector<ttH::Lepton> *tight_leptons_intree = 0;
vector<ttH::Lepton> *preselected_leptons_intree = 0;
vector<ttH::Lepton> raw_leptons;
chain->SetBranchAddress("mcwgt", &mcwgt_intree);
chain->SetBranchAddress("wgt", &wgt_intree);
chain->SetBranchAddress("eventnum", &eventNum_intree);
chain->SetBranchAddress("higgs_decay", &hDecay_intree);
chain->SetBranchAddress("pruned_genParticles", &pruned_genParticles_intree);
chain->SetBranchAddress("raw_electrons", &raw_electrons_intree);
chain->SetBranchAddress("preselected_electrons", &preselected_electrons_intree);
chain->SetBranchAddress("tightMvaBased_electrons", &tight_electrons_intree);
chain->SetBranchAddress("raw_muons", &raw_muons_intree);
chain->SetBranchAddress("preselected_muons", &preselected_muons_intree);
chain->SetBranchAddress("tightMvaBased_muons", &tight_muons_intree);
chain->SetBranchAddress("tightMvaBased_leptons", &tight_leptons_intree);
chain->SetBranchAddress("preselected_leptons", &preselected_leptons_intree);
int positiveCharge;
int negativeCharge;
double leadPt;
double trailPt;
int duplicate = 0;
int total_count = 0;
int ss2l_reco_count =0;
int ss2l_reco_agree_count =0;
int ss2l_gen_count =0;
int ss2l_ee_gen_count =0;
int ss2l_mm_gen_count =0;
int ss2l_em_gen_count =0;
int ss2l_me_gen_count =0;
int l3_reco_count =0;
int l3_reco_agree_count =0;
int l3_gen_count =0;
int l4_reco_count =0;
int l4_reco_agree_count =0;
int l4_gen_count =0;
int ss2l_PS_count = 0;
int ss2l_raw_count = 0;
int l3_PS_count = 0;
int l3_raw_count = 0;
int l4_PS_count = 0;
int l4_raw_count = 0;
int wgt;
//pure rate study
vector<int> cut_vec_ele_int (7,0);
vector<int> cut_vec_mu_int (7,0);
int raw_ele_size = 0;
int raw_mu_size = 0;
//2D plot vars
vector<ttH::GenParticle> genMuons;
//.........这里部分代码省略.........
示例7: skimThisBaby
//
// Fucntions
//
void skimThisBaby(TString inPath, TString inFileName, TString inTreeName, TString outPath){
// Talk to user
cout << " Skimming: "<< endl;
cout << " " << inPath+inFileName <<endl;
// Load input TChain
TChain *ch = new TChain(inTreeName);
TString inFile = inPath;
inFile += inFileName;
ch->Add(inFile);
Long64_t nentries = ch->GetEntries();
TTreeCache::SetLearnEntries(10);
ch->SetCacheSize(128*1024*1024);
// Initialize Branches
babyAnalyzer.Init(ch->GetTree());
babyAnalyzer.LoadAllBranches();
// Setup output file name and path
TString outFileName = outPath;
outFileName += inFileName;
outFileName.ReplaceAll("*", "");
outFileName.ReplaceAll(".root", "_skimmed.root");
cout << " Output will be written to: " << endl;
cout << " " << outFileName << endl << endl;
// Open outputfile and Clone input TTree
TFile *newfile = new TFile(outFileName, "recreate");
TTree *newtree = (TTree*)ch->GetTree()->CloneTree(0);
if(!newtree) cout << "BAD TTREE CLONE" << endl;
TH1D *newCounter=NULL;
// Get nEntries
unsigned int nEventsTotal = 0;
unsigned int nEventsChain = ch->GetEntries();
// Grab list of files
TObjArray *listOfFiles = ch->GetListOfFiles();
TIter fileIter(listOfFiles);
TFile *currentFile = 0;
// File Loop
int iFile=0;
while ( (currentFile = (TFile*)fileIter.Next()) ) {
// Get File Content
TFile *file = new TFile( currentFile->GetTitle() );
TTree *tree = (TTree*)file->Get("t");
TTreeCache::SetLearnEntries(10);
tree->SetCacheSize(128*1024*1024);
babyAnalyzer.Init(tree);
if(iFile==0){
TH1D *temp = (TH1D*)file->Get("h_counter");
newCounter = (TH1D*)temp->Clone("h_counter");
newCounter->SetDirectory(newfile);
}
//else{
//TH1D *temp = (TH1D*)file->Get("h_counter");
//newCounter->Add(temp);
//}
// Loop over Events in current file
if( nEventsTotal >= nEventsChain ) continue;
unsigned int nEventsTree = tree->GetEntriesFast();
for( unsigned int event = 0; event < nEventsTree; ++event) {
// Progress
stop_1l_babyAnalyzer::progress( nEventsTotal, nEventsChain );
// Load Tree
tree->LoadTree(event);
babyAnalyzer.GetEntry(event);
++nEventsTotal;
// Selection
if(nvetoleps()<1) continue;
if(nvetoleps()<2 && PassTrackVeto_v3() && PassTauVeto()) continue;
if(ngoodjets()<2) continue;
if(mt_met_lep()<150.0) continue;
if(pfmet()<200.0) continue;
// Turn on all branches on input
babyAnalyzer.LoadAllBranches();
// Fill output tree
newtree->Fill();
} // end loop over entries
iFile++;
} // end loop over files in TChain
// Clean up
//.........这里部分代码省略.........
示例8: trainElectronEnergyRegression_ECAL
void trainElectronEnergyRegression_ECAL(char* trainingFile, char* outWeightFile, char* optionChar, int nTrees) {
// Setting up training option
std::string optionStr(optionChar);
// ******** If option is V00, V01, V02, etc. ********* //
if (optionStr == "V00" || optionStr == "V01") {
GBRTrainer *traineb = new GBRTrainer;
GBRTrainer *trainebvar = new GBRTrainer;
GBRTrainer *trainee = new GBRTrainer;
GBRTrainer *traineevar = new GBRTrainer;
TTree *intree = 0;
cout << "Training on file " << trainingFile << " with version " << optionChar << endl;
TChain *chainele = new TChain("eleIDdir/T1");
chainele->Add(trainingFile);
chainele->LoadTree(0);
chainele->SetCacheSize(64*1024*1024);
chainele->SetCacheLearnEntries();
intree = chainele;
traineb->AddTree(chainele);
trainebvar->AddTree(chainele);
trainee->AddTree(chainele);
traineevar->AddTree(chainele);
TCut traincut = "pt>0";////////////////////////////////
TCut evtcut;
TCut evtcutvar;
TCut statusenergycut;
//if you want to train also energy variance
evtcut = "event%2==0 ";
evtcutvar = "event%2==1 ";
statusenergycut="(GeneratedEnergyStatus3-GeneratedEnergyStatus1)/GeneratedEnergyStatus3<0.01 && GeneratedEnergyStatus3>=GeneratedEnergyStatus1";
traineb->SetTrainingCut(std::string(traincut && evtcut && statusenergycut && "abs(eta)<1.479 && mcmatch==1"));
trainee->SetTrainingCut(std::string(traincut && evtcut && statusenergycut && "abs(eta)>1.479 && abs(eta)<2.5 && mcmatch==1"));
//turn this off for now
trainebvar->SetTrainingCut(std::string(traincut && evtcutvar && statusenergycut && "abs(eta)<1.479 && mcmatch==1"));
traineevar->SetTrainingCut(std::string(traincut && evtcutvar && statusenergycut && "abs(eta)>1.479 && abs(eta)<2.5 && mcmatch==1"));
const double maxsig = 3.0;
const double shrinkage = 0.1;
traineb->SetMinEvents(200);
traineb->SetShrinkage(shrinkage);
traineb->SetMinCutSignificance(maxsig);
trainebvar->SetMinEvents(200);
trainebvar->SetShrinkage(shrinkage);
trainebvar->SetMinCutSignificance(maxsig);
trainee->SetMinEvents(200);
trainee->SetShrinkage(shrinkage);
trainee->SetMinCutSignificance(maxsig);
traineevar->SetMinEvents(200);
traineevar->SetShrinkage(shrinkage);
traineevar->SetMinCutSignificance(maxsig);
traineb->SetTargetVar("GeneratedEnergyStatus3/SCRawEnergy");
trainebvar->SetTargetVar("abs( targeteb - GeneratedEnergyStatus3/SCRawEnergy) ");
trainee->SetTargetVar("GeneratedEnergyStatus3/(SCRawEnergy*(1+PreShowerOverRaw))");
traineevar->SetTargetVar("abs( targetee - GeneratedEnergyStatus3/(SCRawEnergy*(1+PreShowerOverRaw))) ");
std::vector<std::string> *varsf = new std::vector<std::string>;
varsf->push_back("SCRawEnergy");
varsf->push_back("scEta");
varsf->push_back("scPhi");
varsf->push_back("R9");
varsf->push_back("E5x5Seed/SCRawEnergy");
varsf->push_back("etawidth");
varsf->push_back("phiwidth");
varsf->push_back("NClusters");
varsf->push_back("HoE");
varsf->push_back("rho");
varsf->push_back("vertices");
varsf->push_back("EtaSeed-scEta");
varsf->push_back("atan2(sin(PhiSeed-scPhi),cos(PhiSeed-scPhi))");
varsf->push_back("ESeed/SCRawEnergy");
varsf->push_back("E3x3Seed/ESeed");
varsf->push_back("E5x5Seed/ESeed");
varsf->push_back("see");
varsf->push_back("spp");
// varsf->push_back("sep");
varsf->push_back("EMaxSeed/ESeed");
varsf->push_back("E2ndSeed/ESeed");
varsf->push_back("ETopSeed/ESeed");
varsf->push_back("EBottomSeed/ESeed");
varsf->push_back("ELeftSeed/ESeed");
//.........这里部分代码省略.........