本文整理汇总了C++中TChain::LoadTree方法的典型用法代码示例。如果您正苦于以下问题:C++ TChain::LoadTree方法的具体用法?C++ TChain::LoadTree怎么用?C++ TChain::LoadTree使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TChain
的用法示例。
在下文中一共展示了TChain::LoadTree方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadTree
Long64_t CalibTree::LoadTree(Long64_t entry) {
// Set the environment to read one entry
if (!fChain) return -5;
Long64_t centry = fChain->LoadTree(entry);
if (centry < 0) return centry;
if (fChain->GetTreeNumber() != fCurrent) {
fCurrent = fChain->GetTreeNumber();
Notify();
}
return centry;
}
示例2: main
int main(int argc, char** argv)
{
string inputfile;
string outputfile;
vector<string> datafiles;
/* Argument parsing */
/* ---------------- */
if( argc != 3 ) {
Usage();
} else {
inputfile = argv[1];
outputfile = argv[2];
string extension = inputfile.substr( inputfile.length()-5, 5 );
/* A single input file */
if( extension == ".root" ) {
cout<<"A single input file, "<<inputfile<<endl;
datafiles.push_back(inputfile);
}
/* Input file is a list */
else if( extension == ".list" ) {
cout<<"A list of root files, "<<inputfile<<endl;
/* Grab all the data files in the list */
ifstream inlist( inputfile.c_str() );
string line;
while( getline( inlist, line ) ) {
datafiles.push_back( line );
}
}
/* Other errors */
else {
Usage();
}
}
/* Load the StreamChain and initializa StreamChain Tree reader */
/* ----------------------------------------------------------- */
TChain* EventChain = new TChain("Event");
for( unsigned int i =0; i<datafiles.size(); i++ ) {
EventChain->Add( datafiles[i].c_str() );
}
cout<<datafiles.size()<<" data files will be processed."<<endl;
// Load the ReadinChain Tree
// Get the ReadinChain Tree reader
TR = new TreeReader;
TR->Init(EventChain);
/* Begin Job */
/* --------- */
if( BeginJob() == 0 ) {
cout<<"BeginJob failed"<<endl;
return 0;
}
TFile f( outputfile.c_str(), "RECREATE" );
TH1F* hDistOrg = new TH1F("DistOrg","DistOrg",1000,0,3500);
TH1F* hDistNew = new TH1F("DistNew","DistNew",1000,0,3500);
int nTot = 0;
int nOrg = 0;
int nNew = 0;
TRandom rand;
/* The main loop over every stream entries */
/* --------------------------------------- */
unsigned int entries = EventChain->GetEntries();
for( unsigned int entry=0; entry<entries; entry++ ) {
unsigned int localentry = EventChain->LoadTree(entry);
int ret = TR->GetEntry( localentry );
if( ret==0 ) {
cout<<"Warning: Read error"<<endl;
}
/*** Test each entry here ***/
if( TR->Fold != 2 ) continue;
if( TR->E[1] < 1.9988 ) continue;
if( TR->E[1] > 2.9852 ) continue;
nTot++;
/* Original case */
{
/* Useful event left */
double x0,y0,z0, x1,y1,z1;
/* IBD primary vertex */
x0 = TR->XT[0];
y0 = TR->YT[0];
z0 = TR->ZT[0];
/* Gamma dep center */
x1 = TR->XCpt[1];
y1 = TR->YCpt[1];
z1 = TR->ZCpt[1];
/* Step 1, gamma range */
//.........这里部分代码省略.........
示例3: countMuonsPerRunD3PD
//.........这里部分代码省略.........
tree->SetBranchAddress("EF_mu10_MSonly_EFFS_L1TE10_Matched20", &EF_mu10_MSonly_EFFS_L1TE10_Matched20);
tree->SetBranchAddress("EF_mu10_MSonly_EFFS_L1TE20_Matched20", &EF_mu10_MSonly_EFFS_L1TE20_Matched20);
tree->SetBranchStatus("*",0);
tree->SetBranchStatus("val", 1);
tree->SetBranchStatus("pt", 1);
tree->SetBranchStatus("eta", 1);
tree->SetBranchStatus("eLoss",1);
tree->SetBranchStatus("scat",1);
tree->SetBranchStatus("mu_muid_n", 1);
tree->SetBranchStatus("run", 1);
tree->SetBranchStatus("centrality", 1);
tree->SetBranchStatus("EF_mu4_MSonly_L1TE50", 1);
tree->SetBranchStatus("EF_mu4_L1VTE50", 1);
tree->SetBranchStatus("EF_mu4_MSonly_L1TE50_Matched20", 1);
tree->SetBranchStatus("EF_mu4_L1VTE50_Matched20", 1);
tree->SetBranchStatus("EF_mu10_MSonly_EFFS_L1ZDC", 1);
tree->SetBranchStatus("EF_mu10_MSonly_EFFS_L1TE10", 1);
tree->SetBranchStatus("EF_mu10_MSonly_EFFS_L1TE20", 1);
tree->SetBranchStatus("EF_mu10_MSonly_EFFS_L1ZDC_Matched20", 1);
tree->SetBranchStatus("EF_mu10_MSonly_EFFS_L1TE10_Matched20", 1);
tree->SetBranchStatus("EF_mu10_MSonly_EFFS_L1TE20_Matched20", 1);
std::cout << "Number of entries: " << tree->GetEntries() << std::endl;
///map runnumber to #mu
///need to used multimap since >1 muon
///value for each run number key
std::multimap < int, int> runMap;
///loop over all events
for ( int i = 0; i < tree->GetEntries(); ++i ) {
// if(i>10000) break;
tree->LoadTree(i);
tree->GetEntry(i);
if(i%10000==0) std::cout << "Event " << i << std::endl;
for(int imu = 0; imu<mu_muid_nNt; imu++){
if (
(valNt[imu]>cutValue)
&& abs(etaNt[imu])>0.1
&& abs(etaNt[imu])<2.4
&& ptNt[imu]>ptmin
&& centralityNt>=0.
&& centralityNt<=0.8
&& ( (EF_mu10_MSonly_EFFS_L1ZDC&&EF_mu10_MSonly_EFFS_L1ZDC_Matched20[imu]) ||
(EF_mu10_MSonly_EFFS_L1TE10&&EF_mu10_MSonly_EFFS_L1TE10_Matched20[imu])
||(EF_mu10_MSonly_EFFS_L1TE20&&EF_mu10_MSonly_EFFS_L1TE20_Matched20[imu]) )
){
///count number of muons in this run that pass
runMap.insert(make_pair (runNt,1) );
}
} //imu
} //i
std::cout << std::endl;
std::cout << "------------------------- " << std::endl;
std::cout << " S U M M A R Y " << std::endl;
std::cout << "------------------------- " << std::endl;
TString spreadSheetName = "muonCountingSpreadSheet.csv";
std::ofstream spreadSheet;
spreadSheet.open(spreadSheetName);
double totLumi = 0.0, totalMu = 0;
示例4: ctlMetXY
//.........这里部分代码省略.........
fChain->SetBranchAddress("sumPt_pfMetY", &sumPt_pfMetY, &b_sumPt_pfMetY);
Long64_t nentries = fChain->GetEntriesFast();
//nentries = 30;
Long64_t nbytes = 0, nb = 0;
TCanvas *myCan = new TCanvas("myCan","myCan");
TProfile *pr_MEx_vtx = new TProfile("pr_MEx_vtx","pr_MEx_vtx",20,0,40);
TProfile *pr_MEy_vtx = new TProfile("pr_MEy_vtx","pr_MEy_vtx",20,0,40);
TProfile *pr_MEx_pfMetT_vtx[vtxBin];
TProfile *pr_MEx_vtx_pfMetT[metBin];
TProfile *pr_MEy_vtx_pfMetT[metBin];
TProfile *pr_MEx_pfMetT = new TProfile("pr_MEx_pfMetT","pr_MEx_pfMetT",30,0,90);
TString name;
for(int i(0);i<vtxBin;i++){
name = Form("pr_MEx_pfMetT_vtx%d", (i+1)*metBin);
pr_MEx_pfMetT_vtx[i] = new TProfile(name,name,30,0,90);
}
for(int i(0); i<metBin;i++){
name = Form("pr_MEx_vtx_pfMetT%d", (i+1)*metBin);
pr_MEx_vtx_pfMetT[i] = new TProfile(name,name,20,0,40);
pr_MEx_vtx_pfMetT[i]->SetMaximum(5);
pr_MEx_vtx_pfMetT[i]->SetMinimum(-3);
name = Form("pr_MEy_vtx_pfMetT%d", (i+1)*metBin);
pr_MEy_vtx_pfMetT[i] = new TProfile(name,name,20,0,40);
pr_MEy_vtx_pfMetT[i]->SetMaximum(5);
pr_MEy_vtx_pfMetT[i]->SetMinimum(-3);
}
TH1D *h_pfMetT = new TH1D("h_pfMetT","h_pfMetT",50,0,100);
for (Long64_t jentry=0; jentry<nentries;jentry++) {
Long64_t ientry = fChain->LoadTree(jentry);
if (ientry < 0) break;
nb = fChain->GetEntry(jentry); nbytes += nb;
//cout<<"size catagory: "<<nVtx_catagory->size()<<endl; // size 16
for(unsigned i(0); i < nVtx_catagory->size(); i++){
if( (*nVtx_catagory)[i] % PtlTT == PtlIdx){ // 12(hHFMinus)
h_pfMetT->Fill((*nVtx_pfMetT)[i]);
pr_MEx_vtx->Fill((*nVtx_nVtx)[i],(*nVtx_MetX)[i]);
pr_MEy_vtx->Fill((*nVtx_nVtx)[i],(*nVtx_MetY)[i]);
pr_MEx_pfMetT->Fill((*nVtx_pfMetT)[i], (*nVtx_MetX)[i]);
for(int j(0); j<vtxBin;j++){ // As a ftn of MET
if((*nVtx_nVtx)[i] > j*5 && (*nVtx_nVtx)[i] <=(j+1)*5){
pr_MEx_pfMetT_vtx[j]->Fill((*nVtx_pfMetT)[i], (*nVtx_MetX)[i]);
}
}
for( int j(0); j<metBin; j++) // As a ftn of vtx
{
if(j==metBin-1){
if( (*nVtx_pfMetT)[i] > j*10 )
{
pr_MEx_vtx_pfMetT[j]->Fill((*nVtx_nVtx)[i], (*nVtx_MetX)[i]);
pr_MEy_vtx_pfMetT[j]->Fill((*nVtx_nVtx)[i], (*nVtx_MetY)[i]);
}
}else{
if( (*nVtx_pfMetT)[i] > j*10 && (*nVtx_pfMetT)[i] < (j+1)*10 )
{
pr_MEx_vtx_pfMetT[j]->Fill((*nVtx_nVtx)[i], (*nVtx_MetX)[i]);
pr_MEy_vtx_pfMetT[j]->Fill((*nVtx_nVtx)[i], (*nVtx_MetY)[i]);
}
}
}
}
示例5: execCheckErrors
void execCheckErrors(bool what = 0)
{
TTree *tree = 0;
TFile *file = 0;
if (what == 0) {
tree = new TTree("ntuple","");
float px = 0;
tree->Branch("px",&px);
TString str;
tree->Branch("str",&str);
tree->Fill();
tree->ResetBranchAddresses();
} else if (what == 1) {
file = new TFile("hsimple.root");
tree = (TTree*)file->Get("ntuple");
} else {
tree = new TChain("ntuple", "ntuple");
((TChain*)tree)->Add("hsimple.root");
}
// tree->SetBranchStatus("*", 1);
// tree->SetBranchStatus("px", 1);
// std::cout << "fTreeNumber = " << tree->GetTreeNumber() << std::endl;
tree->LoadTree(0); // REQUIRED
// std::cout << "fTreeNumber = " << tree->GetTreeNumber() << std::endl;
TBranch *p = ((TBranch *)-1);
Int_t r;
Float_t px, fake_px;
Float_t *pxp = new Float_t();
Float_t *fake_pxp = new Float_t();
Int_t ix;
Int_t *ixp = new Int_t();
TString s;
TString *sp = new TString();
TObjString os;
TObjString *osp = new TObjString();
// Float_t ... (should be fine)
std::cout << std::endl << "ALL should be FINE ... " << std::endl;
p = ((TBranch *)-1);
r = tree->SetBranchAddress("px", &px, &p);
std::cout << "Float_t ... " << r << std::endl;
if (p==((TBranch*)-1)) {
std::cout << "p unchanged\n";
} else if (p==0) {
std::cout << "p set to zero\n";
} else {
std::cout << "p set to the branch address\n";
}
r = tree->SetBranchAddress("px", &px);
std::cout << "Float_t ... " << r << std::endl;
r = tree->SetBranchAddress("px", pxp);
std::cout << "Float_t ... " << r << std::endl;
r = tree->SetBranchAddress("px", &pxp);
std::cout << "Float_t ... " << r << std::endl;
// Int_t ... (should fail)
std::cout << std::endl << "ALL should FAIL ... " << std::endl;
p = ((TBranch *)-1);
r = tree->SetBranchAddress("px", &ix, &p);
std::cout << "Int_t ... " << r << std::endl;
if (p==((TBranch*)-1)) {
std::cout << "p unchanged\n";
} else if (p==0) {
std::cout << "p set to zero\n";
} else {
std::cout << "p set to the branch address\n";
}
r = tree->SetBranchAddress("px", &ix);
std::cout << "Int_t ... " << r << std::endl;
r = tree->SetBranchAddress("px", ixp);
std::cout << "Int_t ... " << r << std::endl;
r = tree->SetBranchAddress("px", &ixp);
std::cout << "Int_t ... " << r << std::endl;
// TString ... (should fail)
std::cout << std::endl << "ALL should FAIL ... " << std::endl;
p = ((TBranch *)-1);
r = tree->SetBranchAddress("px", &s, &p);
std::cout << "TString ... " << r << std::endl;
if (p==((TBranch *)-1)) {
std::cout << "p unchanged\n";
} else if (p==0) {
std::cout << "p set to zero\n";
} else {
std::cout << "p set to the branch address\n";
}
r = tree->SetBranchAddress("px", sp);
std::cout << "TString ... " << r << std::endl;
r = tree->SetBranchAddress("px", &sp);
std::cout << "TString ... " << r << std::endl;
// TObjString ... (should fail)
std::cout << std::endl << "ALL should FAIL ... " << std::endl;
p = ((TBranch *)-1);
r = tree->SetBranchAddress("px", &os, &p);
//.........这里部分代码省略.........
示例6: GetOptimization
//.........这里部分代码省略.........
curGraph = 0;
for (filterNum = 0; filterNum < (paths[pathNum].filters).size(); filterNum++) {
if ((paths[pathNum].filters)[filterNum].maxCut != 0.) {
myCanvas->cd(curGraph+1);
curGraph++;
graphTitle = "Efficiency vs. Background for ";
graphTitle += (paths[pathNum].filters)[filterNum].name;
graphTitle += " Filter in Endcap;Background Rate (Hz);Signal Eff.";
EffVBkgEcap[pathNum][filterNum].SetTitle(graphTitle);
EffVBkgEcap[pathNum][filterNum].Draw("AP");
}
}
myCanvas->Print(outFilename);
}
}
TH1F *timingSig = new TH1F("timingSig", "Timing of Single Electron Filters in Signal Events", 6, 0, 6);
timingSig->SetCanExtend(TH1::kAllAxes);
timingSig->SetStats(0);
TTreeFormula *l1MatchTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.l1Match",sigEvents);
TTreeFormula *EtTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.Et",sigEvents);
TTreeFormula *IHcalTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.ElecIHcal",sigEvents);
TTreeFormula *pixMatchTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.pixMatch",sigEvents);
TTreeFormula *EoverpTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.Eoverp",sigEvents);
TTreeFormula *ItrackTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.ElecItrack",sigEvents);
Long64_t event = 0;
Double_t avgL1Match = 0.;
Double_t avgEt = 0.;
Double_t avgIHcal = 0.;
Double_t avgPixMatch = 0.;
Double_t avgEoverp = 0.;
Double_t avgItrack = 0.;
for (event = 0; event < sigEvents->GetEntries(); event++) {
sigEvents->LoadTree(event);
avgL1Match = (event*avgL1Match + l1MatchTiming->EvalInstance(0))/ ((Double_t) (event+1));
avgEt = (event*avgEt + EtTiming->EvalInstance(0))/ ((Double_t) (event+1));
avgIHcal = (event*avgIHcal + IHcalTiming->EvalInstance(0))/ ((Double_t) (event+1));
avgPixMatch = (event*avgPixMatch + pixMatchTiming->EvalInstance(0))/ ((Double_t) (event+1));
avgEoverp = (event*avgEoverp + EoverpTiming->EvalInstance(0))/ ((Double_t) (event+1));
avgItrack = (event*avgItrack + ItrackTiming->EvalInstance(0))/ ((Double_t) (event+1));
}
timingSig->Fill("L1 Match", avgL1Match);
timingSig->Fill("Et", avgEt);
timingSig->Fill("IHcal", avgIHcal);
timingSig->Fill("Pix Match", avgPixMatch);
timingSig->Fill("E/p", avgEoverp);
timingSig->Fill("Itrack", avgItrack);
timingSig->LabelsDeflate("X");
timingSig->LabelsOption("v");
TH1F *timingBkg = new TH1F("timingBkg", "Timing of Single Electron Filters in Background Events", 6, 0, 6);
timingBkg->SetCanExtend(TH1::kAllAxes);
timingBkg->SetStats(0);
avgL1Match = 0.;
avgEt = 0.;
avgIHcal = 0.;
avgPixMatch = 0.;
avgEoverp = 0.;
avgItrack = 0.;
for (xSecNum = 0; xSecNum < bkgEvents.size(); xSecNum++) {
delete l1MatchTiming; l1MatchTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.l1Match",bkgEvents[xSecNum].first);
delete EtTiming; EtTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.Et",bkgEvents[xSecNum].first);
delete IHcalTiming; IHcalTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.ElecIHcal",bkgEvents[xSecNum].first);
delete pixMatchTiming; pixMatchTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.pixMatch",bkgEvents[xSecNum].first);
delete EoverpTiming; EoverpTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.Eoverp",bkgEvents[xSecNum].first);
delete ItrackTiming; ItrackTiming = new TTreeFormula("Timing","HLTTiming_hltCutVars_IsoTiming_EGAMMAHLT.obj.ElecItrack",bkgEvents[xSecNum].first);
示例7: readTree
void readTree(TString filelist="/global/project/projectdirs/star/pwg/starhf/zamiller/minBiasTemplates101015/Trees.list",TString outFile="/global/project/projectdirs/star/pwg/starhf/zamiller/minBiasTemplates101015/readTreeOutSubmitTEST.root")
{
//TString filelist=Form("%s/%s",localDir,fileIn);
//TString outFile=Form("%s/%s",outDir,fileOut);
TFile fout(outFile,"RECREATE");
TH1F::SetDefaultSumw2();
TH1D::SetDefaultSumw2();
for(Int_t c=0; c< numPtBins; c++)
{
lowpt[c] = anaConst::lpt[c];
highpt[c] = anaConst::hpt[c];
}
for(Int_t ptbin = 0; ptbin < numPtBins; ptbin++)
{
hdEtaRawce[ptbin] = new TH1D(Form("hdEtaRawce_%i",ptbin),"hdEtaRawce",100, -5,5);
hdEtaRawbe[ptbin] = new TH1D(Form("hdEtaRawbe_%i",ptbin),"hdEtaRawbe",100, -5,5);
hEventTallyce[ptbin] = new TH1D(Form("ceEventTally_%i",ptbin),"ceEvent Tally",1,0,1);
hEventTallybe[ptbin] = new TH1D(Form("beEventTally_%i",ptbin),"beEvent Tally",1,0,1);
hEventTallybce[ptbin] = new TH1D(Form("bceEventTally_%i",ptbin),"bceEvent Tally",1,0,1);
hdPhiRawce[ptbin] = new TH1D(Form("hdPhiRawce_%i",ptbin),"hdPhiRawce",Phibin, -10,10);
hdPhiRawbe[ptbin] = new TH1D(Form("hdPhiRawbe_%i",ptbin),"hdPhiRawbe",Phibin, -10,10);
hdPhiRawbce[ptbin] = new TH1D(Form("hdPhiRawbce_%i",ptbin),"hdPhiRawbce",Phibin, -10,10);
hept[ptbin] = new TH1D(Form("hept_%i",ptbin),"hept",200,0.,20.);
}
// Make Chain
TChain* chain = new TChain("tree");
int nfile = 0;
/* nfile += chain->Add("Oct30_set13/pythia_tree_Oct30_13.root");
nfile += chain->Add("Oct30_set14/pythia_tree_Oct30_14.root");
nfile += chain->Add("Oct30_set15/pythia_tree_Oct30_15.root");
nfile += chain->Add("Oct30_set16/pythia_tree_Oct30_16.root");
nfile += chain->Add("Oct30_set17/pythia_tree_Oct30_17.root");
// nfile += chain->Add("Oct30_set12/pythia_tree_Oct30_12.root");
// nfile += chain->Add("Oct26_set3/pythia_tree_Oct26_3.root");
// nfile += chain->Add("Oct18_set4/pythia_tree_Oct18_4.root");
//nfile += chain->Add("liweiTemplate_part2.root");*/
char filename[1000];
ifstream fstream(filelist.Data());
int ifile = 0;
while (fstream >> filename)
{
nfile+= chain->Add(filename);
std::cout << "Got File: " << filename << std::endl;
}
std::cout <<"Added "<<nfile<<" files"<<std::endl;
std::cout<<"# entries in chain: "<<chain->GetEntries()<<std::endl;
if (chain == 0) return;
int ceNtrigger=0;
int beNtrigger=0;
int bceNtrigger=0;
int ptbin,maxptbin;
//define variables
Int_t Event, numberofcElectrons, numberofbElectrons,numberofbcElectrons, numberofHadrons, noTracks; //
Float_t celectron_id,celectron_status,celectron_pt,celectron_pz,celectron_phi,celectron_eta,celectron_y; //track info
Float_t belectron_id,belectron_status,belectron_pt,belectron_pz,belectron_phi,belectron_eta,belectron_y;
Float_t bcelectron_id,bcelectron_status,bcelectron_pt,bcelectron_pz,bcelectron_phi,bcelectron_eta,bcelectron_y;
Float_t assoh_id,assoh_status,assoh_pt,assoh_pz,assoh_phi,assoh_eta,assoh_y;
int goodEvent = 0;
Long64_t nentries = chain->GetEntriesFast();
int x = 0; int n = nentries; int w = 25;
for(int i = 0; i < nentries; i++){
Long64_t ientry = chain->LoadTree(i);
if (ientry < 0) break;
TBranch *b_destep = chain->GetBranch("hf2eDecay");
TLeaf* leaf_Event_id = b_destep->GetLeaf("Event_id");
TLeaf* leaf_refMult = b_destep->GetLeaf("refMult");
TLeaf* leaf_numberofcElectrons = b_destep->GetLeaf("numberofcElectrons");
TLeaf* leaf_numberofbElectrons = b_destep->GetLeaf("numberofbElectrons");
TLeaf* leaf_numberofbcElectrons = b_destep->GetLeaf("numberofbcElectrons");
TLeaf* leaf_numberofHadrons = b_destep->GetLeaf("numberofHadrons");
TLeaf* leaf_noTracks = b_destep->GetLeaf("noTracks");
TLeaf* leaf_ce_id = b_destep->GetLeaf("ce_id");
TLeaf* leaf_ce_status = b_destep->GetLeaf("ce_status");
TLeaf* leaf_ce_pt = b_destep->GetLeaf("ce_pt");
TLeaf* leaf_ce_pz = b_destep->GetLeaf("ce_pz");
TLeaf* leaf_ce_phi = b_destep->GetLeaf("ce_phi");
TLeaf* leaf_ce_eta = b_destep->GetLeaf("ce_eta");
TLeaf* leaf_ce_y = b_destep->GetLeaf("ce_y");
TLeaf* leaf_be_id = b_destep->GetLeaf("be_id");
TLeaf* leaf_be_status = b_destep->GetLeaf("be_status");
TLeaf* leaf_be_pt = b_destep->GetLeaf("be_pt");
TLeaf* leaf_be_pz = b_destep->GetLeaf("be_pz");
TLeaf* leaf_be_phi = b_destep->GetLeaf("be_phi");
TLeaf* leaf_be_eta = b_destep->GetLeaf("be_eta");
TLeaf* leaf_be_y = b_destep->GetLeaf("be_y");
//.........这里部分代码省略.........
示例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");
//.........这里部分代码省略.........