本文整理汇总了C++中TTree::GetAlias方法的典型用法代码示例。如果您正苦于以下问题:C++ TTree::GetAlias方法的具体用法?C++ TTree::GetAlias怎么用?C++ TTree::GetAlias使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TTree
的用法示例。
在下文中一共展示了TTree::GetAlias方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: plotAll
int plotAll(){
TFile *file = new TFile("/hadoop/cms/store/group/snt/phys14/TTJets_MSDecaysCKM_central_Tune4C_13TeV-madgraph-tauola_Phys14DR-PU20bx25_PHYS14_25_V1-v1/V07-02-08/merged_ntuple_4.root");
TTree *tree = (TTree*)file->Get("Events");
int nEntries = tree->GetEntries();
TList *t_list = tree->GetListOfAliases();
for(int i = 0; i < t_list->GetSize(); i++) {
TString aliasname(t_list->At(i)->GetName());
cout << aliasname.Data() << endl;
TString command = aliasname;
//Support Lorentz Vectors
TBranch *branch = tree->GetBranch(tree->GetAlias(aliasname.Data()));
TString branchname(branch->GetName());
if( branchname.Contains("LorentzVector") ) {
command.Append(".Pt()");
}
//Don't support vectors of vectors
if(branchname.BeginsWith("intss") || branchname.BeginsWith("floatss") || branchname.BeginsWith("doubless") || branchname.Contains("LorentzVectorss") || branchname.Contains("timestamp") ){
cout << "Sorry, I dont support vector of vectors of objects, will be skipping " << aliasname << endl;
continue;
}
//Don't support TStrings
if(branchname.Contains("TString") ) {
cout << "Sorry, I dont support strings, will be skipping " << aliasname << endl;
continue;
}
TString histname = "hist_" + aliasname + ".pdf";
TH1F* null = new TH1F("","",1,0,1);
command.Append(">>hist");
tree->Draw(command.Data(), (aliasname)+"!=-9999 &&"+(aliasname)+"!=-999");
TH1F *hist = (TH1F*)gDirectory->Get("hist");
if (hist->Integral() == 0) tree->Draw(command.Data());
hist = (TH1F*)gDirectory->Get("hist");
vector <TH1F*> hists;
hists.push_back(hist);
vector <string> titles;
titles.push_back("");
//Overflow and Underflow
hist->SetBinContent(1, hist->GetBinContent(1)+hist->GetBinContent(0));
hist->SetBinContent(hist->GetNbinsX(), hist->GetBinContent(hist->GetNbinsX())+hist->GetBinContent(hist->GetNbinsX()+1));
if (hist->GetXaxis()->GetXmax() == hist->GetXaxis()->GetXmin()){
ofstream myfile;
myfile.open("names.txt", ios_base::app);
myfile << aliasname.Data() << "\n";
myfile.close();
}
float max = hist->GetMaximum()*100;
string subtitle = aliasname.Data();
string histname2 = histname.Data();
dataMCplotMaker(null, hists, titles, subtitle, "CMS3 4.02 Validation", Form("--outputName %s --noFill --noLegend --setMaximum %f --energy 13 --lumi 0 --xAxisLabel %s --noXaxisUnit --noDivisionLabel", subtitle.c_str(), max, histname2.c_str()));
}
system("mkdir plots");
system("mv *.pdf plots/");
system("gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=merged.pdf plots/*pdf");
return 0;
}
示例2: doPostProcessing
void doPostProcessing(TString infname, TString outfile, Int_t events,
Float_t xsec, Float_t kfactor,
Float_t filt_eff, bool SortBasketsByEntry = false) {
cout << "Processing File " << infname << endl;
TFile *f = TFile::Open(infname.Data(), "READ");
if (! f || f->IsZombie()) {
cout << "File does not exist!" << endl;
return;
}
TTree* t = (TTree*)f->Get("Events");
if (! t || t->IsZombie()) {
cout << "Tree does not exist!" << endl;
return;
}
//-------------------------------------------------------------
// Removes all non *_CMS2.* branches
//-------------------------------------------------------------`
t->SetBranchStatus("*", 0);
t->SetBranchStatus("*_CMS2.*", 1);
// Removes the branches (if they exist) that we want to replace
//evt_xsec_excl
TString bName = t->GetAlias("evt_xsec_excl");
//cout << "evt_xsec_excl " << bName << endl;
if(bName != "") {
bName.ReplaceAll(".obj", "*");
t->SetBranchStatus(bName.Data(), 0);
}
//evt_xsec_incl
bName = t->GetAlias("evt_xsec_incl");
//cout << "evt_xsec_incl " << bName << endl;
if(bName != "") {
bName.ReplaceAll(".obj", "*");
t->SetBranchStatus(bName.Data(), 0);
}
//evt_kfactor
bName = t->GetAlias("evt_kfactor");
//cout << "evt_kfactor " << bName << endl;
if(bName != "") {
bName.ReplaceAll(".obj", "*");
t->SetBranchStatus(bName.Data(), 0);
}
//evt_nEvts
bName = t->GetAlias("evt_nEvts");
//cout << "evt_nEvts " << bName << endl;
if(bName != "") {
bName.ReplaceAll(".obj", "*");
t->SetBranchStatus(bName.Data(), 0);
}
//evt_filt_eff
bName = t->GetAlias("evt_filt_eff");
//cout << "evt_filt_eff " << bName << endl;
if(bName != "") {
bName.ReplaceAll(".obj", "*");
t->SetBranchStatus(bName.Data(), 0);
}
//evt_scale1fb
bName = t->GetAlias("evt_scale1fb");
//cout << "evt_scale1fb " << bName << endl;
if(bName != "") {
bName.ReplaceAll(".obj", "*");
t->SetBranchStatus(bName.Data(), 0);
}
TFile *out = TFile::Open(outfile.Data(), "RECREATE");
TTree *clone;
if(SortBasketsByEntry)
clone = t->CloneTree(-1, "fastSortBasketsByEntry");
else
clone = t->CloneTree(-1, "fast");
//-------------------------------------------------------------
//Calculate scaling factor and put variables into tree
Float_t scale1fb = xsec*kfactor*1000*filt_eff/(Float_t)events;
cout << "scale1fb: " << scale1fb << endl;
TBranch* b1 = clone->Branch("evtscale1fb", &scale1fb, "evt_scale1fb/F");
TBranch* b2 = clone->Branch("evtxsecexcl", &xsec, "evt_xsec_excl/F");
TBranch* b3 = clone->Branch("evtxsecincl", &xsec, "evt_xsec_incl/F");
TBranch* b4 = clone->Branch("evtkfactor", &kfactor, "evt_kfactor/F");
TBranch* b5 = clone->Branch("evtnEvts", &events, "evt_nEvts/I");
TBranch* b6 = clone->Branch("evtfilteff", &filt_eff, "evt_filt_eff/F");
clone->SetAlias("evt_scale1fb", "evtscale1fb");
clone->SetAlias("evt_xsec_excl", "evtxsecexcl");
clone->SetAlias("evt_xsec_incl", "evtxsecincl");
clone->SetAlias("evt_kfactor", "evtkfactor");
clone->SetAlias("evt_nEvts", "evtnEvts");
clone->SetAlias("evt_filt_eff", "evtfilteff");
//.........这里部分代码省略.........
示例3: makeHeaderFile
//-------------------------------------------------------------------------------------------------
void makeHeaderFile(TFile *f, const string& treeName, bool paranoid, const string& Classname, const string& nameSpace, const string& objName) {
headerf << "// -*- C++ -*-" << endl;
headerf << "#ifndef " << Classname << "_H" << endl;
headerf << "#define " << Classname << "_H" << endl;
headerf << "#include \"Math/LorentzVector.h\"" << endl;
headerf << "#include \"Math/Point3D.h\"" << endl;
headerf << "#include \"TMath.h\"" << endl;
headerf << "#include \"TBranch.h\"" << endl;
headerf << "#include \"TTree.h\"" << endl;
headerf << "#include \"TH1F.h\"" << endl;
headerf << "#include \"TFile.h\"" << endl;
headerf << "#include \"TBits.h\"" << endl;
headerf << "#include <vector>" << endl;
headerf << "#include <unistd.h>" << endl;
headerf << "typedef ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<float> > LorentzVector;" << endl << endl;
if (paranoid)
headerf << "#define PARANOIA" << endl << endl;
headerf << "using namespace std; " << endl;
headerf << "class " << Classname << " {" << endl;
headerf << "private: " << endl;
headerf << "protected: " << endl;
headerf << "\tunsigned int index;" << endl;
// TTree *ev = (TTree*)f->Get("Events");
TList* list_of_keys = f->GetListOfKeys();
std::string tree_name = "";
if (treeName.empty()) {
unsigned int ntrees = 0;
for (unsigned int idx = 0; idx < (unsigned int)list_of_keys->GetSize(); idx++) {
const char* obj_name = list_of_keys->At(idx)->GetName();
TObject* obj = f->Get(obj_name);
if (obj->InheritsFrom("TTree")) {
++ntrees;
tree_name = obj_name;
}
}
if (ntrees == 0) {
std::cout << "Did not find a tree. Exiting." << std::endl;
return;
}
if (ntrees > 1) {
std::cout << "Found more than one tree. Please specify a tree to use." << std::endl;
return;
}
}
else
tree_name = treeName;
TTree *ev = (TTree*)f->Get(tree_name.c_str());
TSeqCollection *fullarray = ev->GetListOfAliases();
bool have_aliases = true;
if (!fullarray) {
have_aliases = false;
fullarray = ev->GetListOfBranches();
}
// if (have_aliases && fullarray->GetSize() != ev->GetListOfBranches()->GetSize()) {
// std::cout << "Tree has " << fullarray->GetSize() << " aliases and " << ev->GetListOfBranches()->GetSize() << " branches. Exiting." << std::endl;
// return;
// }
TList *aliasarray = new TList();
for(Int_t i = 0; i < fullarray->GetEntries(); ++i) {
TString aliasname(fullarray->At(i)->GetName());
// TBranch *branch = ev->GetBranch(ev->GetAlias(aliasname.Data()));
TBranch *branch = 0;
if (have_aliases)
branch = ev->GetBranch(ev->GetAlias(aliasname.Data()));
else
branch = (TBranch*)fullarray->At(i);
TString branchname(branch->GetName());
TString branchtitle(branch->GetTitle());
TString branchclass(branch->GetClassName());
if(!branchname.BeginsWith("int") &&
!branchname.BeginsWith("uint") &&
!branchname.BeginsWith("bool") &&
!branchname.BeginsWith("float") &&
!branchname.BeginsWith("double") &&
!branchtitle.EndsWith("/F") &&
!branchtitle.EndsWith("/I") &&
!branchtitle.EndsWith("/i") &&
!branchtitle.EndsWith("/O") &&
!branchtitle.BeginsWith("TString") &&
!branchtitle.BeginsWith("TBits") &&
!branchclass.Contains("LorentzVector") &&
!branchclass.Contains("int") &&
!branchclass.Contains("uint") &&
!branchclass.Contains("bool") &&
!branchclass.Contains("float") &&
!branchclass.Contains("double") &&
!branchclass.Contains("TString"))
continue;
// if (branchclass.Contains("TString"))
//.........这里部分代码省略.........