本文整理汇总了C++中TDirectoryFile类的典型用法代码示例。如果您正苦于以下问题:C++ TDirectoryFile类的具体用法?C++ TDirectoryFile怎么用?C++ TDirectoryFile使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TDirectoryFile类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SaveOutput
// Save to .root file
void SaveOutput(TString name,TList &list)
{
TFile *out = new TFile(name,"RECREATE");
TDirectory *pwd = gDirectory;
for(int i=0;i<list.GetSize();i++)
{
TDecayMode *dm = list.At(i);
TDirectory *subdir = out->mkdir(dm->GetName());
subdir->cd();
subdir->Append(dm);
subdir->Append(dm->histograms);
pwd->cd();
}
if(!genDesc) cout<<"WARNING! No Generator description in files!"<<endl;
else out->Append(genDesc);
if(userHisto)
{
TDecayMode *uh = (TDecayMode*) userHisto;
cout<<"INFO: Appending user histograms"<<endl;
TDirectoryFile *histos = out->mkdir("USER_HISTOGRAMS");
TIter nexthist(uh->histograms);
TKey *key_hist=0;
TH1D *h;
while(h=(TH1D*)nexthist()) histos->Append(h);
}
out->Write();
out->Close();
delete out;
}
示例2: pv_dist
void pv_dist(const string& fFile, const string& fTitle, const string& fNameExt) {
TH1F *h;
TFile file(fFile.c_str());
TDirectoryFile *dir = (TDirectoryFile*)file.Get("offsetAnalysis");
TDirectoryFile *subDir = (TDirectoryFile*)dir->Get("PrimaryVertices");
h = (TH1F*)subDir->Get("h_NofPVs");
string name = h->GetName();
string fileName = name + "__" + fNameExt + ".png";
h->SetTitle(fTitle.c_str());
TCanvas *c = new TCanvas("c","",1120,800);
c->cd();
h->SetLineWidth(2);
h->Draw();
c->SetLogy();
c->SaveAs(fileName.c_str());
delete c;
}
示例3: MakeHistsForSlides
Double_t MakeHistsForSlides(TString goodFile, TString badFile, TString rootFile)
{
//Extracting the histogram
TFile* f = TFile::Open(rootFile);
TDirectoryFile* dirFile = (TDirectoryFile*)(f->Get("AliAnalysisTaskCalibEmcal"));
TList* list = (TList*)(dirFile->Get("histogram"));
TH2D* cellVAmplitude = (TH2D*)(list->FindObject("_histogram_cell_id_amplitude"));
//Getting a Good Cell
TH1D* goodC = new TH1D();
ifstream myFile(goodFile);
TString title = "";
const int num = 500;
if(myFile.is_open())
{
string line = "";
std::getline(myFile,line);
int index = 0;
double chi2 = 0.0;
while(myFile >> index >> chi2 && index < num)
{
//cout << index << "\t" << chi2 << endl;
title = Form("Energy distribution of Cell %d",index);
TH1D* goodCell = cellVAmplitude->ProjectionY("goodCell", index+1,index+1);
goodC = (TH1D*)goodCell->Clone();
}
}
示例4: getEffHists
std::pair<TH3F*,TH3F*> getEffHists(const char *file, const char *dirC,
const char *histN, const char *histD){
TFile *efile = new TFile(file,"read");
TDirectoryFile *efileDIR = (TDirectoryFile*) efile->GetDirectory(dirC);
TIter next(efileDIR->GetListOfKeys());
TKey *key;
Char_t name[100];
TH3F *hpneff3d=0;
TH3F *hpdeff3d=0;
while ((key=(TKey*)next())) {
sprintf(name,"%s",key->GetName());
if(strcmp((key->GetName()),(histN))==0){
//cout<<"[getEffHists] Your numerator for Eff "<<name<<endl;
hpneff3d = (TH3F*) efileDIR->Get(name);
}
if(strcmp((key->GetName()),(histD))==0){
//cout<<"[getEffHists] Your denominator for Eff "<<name<<endl;
hpdeff3d = (TH3F*) efileDIR->Get(name);
}
}
//efileDIR->Close();
//efile->Close();
return std::pair<TH3F*,TH3F*>(hpneff3d,hpdeff3d);
}
示例5: overlay_plots
void overlay_plots(const string& fFile0, const string& fFile1, const double fYmax, const string& fPlot, const string& fLegendEnt1, const string& fLegendEnt2, const string& fName) {
TProfile *p[2];
TFile file0(fFile0.c_str());
TDirectoryFile *subDir = (TDirectoryFile*)file0.Get("offsetAnalysis");
p[0] = (TProfile*)subDir->Get(fPlot.c_str());
TFile file1(fFile1.c_str());
subDir = (TDirectoryFile*)file1.Get("offsetAnalysis");
p[1] = (TProfile*)subDir->Get(fPlot.c_str());
p[0]->SetTitleOffset(1.5,"Y");
p[0]->GetXaxis()->SetTitleSize(0.04);
p[0]->GetYaxis()->SetTitleSize(0.04);
double ymax = ((p[0]->GetMaximum())>(p[1]->GetMaximum())) ? p[0]->GetMaximum() : p[1]->GetMaximum();
p[0]->GetYaxis()->SetRangeUser(0.,fYmax);
TCanvas *c = new TCanvas("c","",800,800);
c->cd();
p[0]->SetLineWidth(3);
p[0]->SetLineColor(kRed);
p[0]->SetFillColor(kRed);
p[0]->Draw("hist");
p[1]->SetLineWidth(3);
p[1]->SetLineColor(kBlack);
p[1]->SetMarkerStyle(20);
p[1]->SetMarkerColor(kBlack);
p[1]->Draw("sames");
TLegend *legend = new TLegend(.57,.77,.9,.87);
legend->SetBorderSize(1);
legend->SetFillColor(0);
// legend->SetFillStyle(0);
legend->SetMargin(0.12);
legend->AddEntry(p[0],fLegendEnt1.c_str(),"l");
legend->AddEntry(p[1],fLegendEnt2.c_str(),"l");
legend->Draw();
TLatex l;
l.SetTextAlign(12);
l.SetTextSize(0.04);
l.SetTextFont(62);
l.SetNDC();
l.DrawLatex(0.15,0.85,"CMS 2009 Preliminary");
string fileName = fName;
c->SetGridy();
c->SaveAs(fileName.c_str());
delete legend;
delete c;
}
示例6: main
int
main (int argc, char *argv[])
{
map<string, string> opt;
vector<string> argVector;
parseOptions (argc, argv, opt, argVector);
if (argVector.size () != 1 || opt.count ("help"))
{
printHelp (argv[0]);
return 0;
}
TFile *fin;
if (!(fin = TFile::Open (argVector.at (0).c_str (), "update")))
{
cout << "Failed to open " << argVector.at (0) << "!" << endl;
return 0;
}
TIter next0 (fin->GetListOfKeys ());
TObject *obj0;
TH1D *cutFlow = 0;
TDirectoryFile *dir = 0;
while ((obj0 = next0 ()))
{
string obj0Class = ((TKey *) obj0)->GetClassName (),
obj0Name = obj0->GetName ();
if (obj0Class == "TDirectoryFile")
{
dir = (TDirectoryFile *) fin->Get (obj0Name.c_str ());
TIter next1 (dir->GetListOfKeys ());
TObject *obj1;
while ((obj1 = next1 ()))
{
string obj1Class = ((TKey *) obj1)->GetClassName (),
obj1Name = obj1->GetName ();
if (obj1Class == "TH1D" && obj1Name.length () >= 7 && ((obj1Name.substr (obj1Name.length () - 7, 7) == "CutFlow" || obj1Name.substr (obj1Name.length () - 7, 7) == "cutFlow")
|| (obj1Name.length () >= 9 && (obj1Name.substr (obj1Name.length () - 9, 9) == "Selection" || obj1Name.substr (obj1Name.length () - 9, 9) == "selection"))
|| (obj1Name.length () >= 8 && (obj1Name.substr (obj1Name.length () - 8, 8) == "MinusOne" || obj1Name.substr (obj1Name.length () - 8, 8) == "minusOne")))
&& !dir->Get ((obj1Name + "LowerLimit").c_str ()) && !dir->Get ((obj1Name + "UpperLimit").c_str ()))
{
cutFlow = (TH1D *) dir->Get (obj1Name.c_str ());
cutFlow->SetDirectory (0);
getLimits (cutFlow, dir);
}
}
}
}
fin->Close ();
return 0;
}
示例7: filechk
int filechk(string fname)
{
//TFile f("DQM_V0001_SiStrip_R000062940.root");
TFile f(fname.c_str());
if (f.IsZombie()){
//cout << "File corrupted" << endl;
return -1;
}
else
{
if ( fname.find("_SiStrip_") != string::npos ){
TString rnStr = fname.substr(fname.find("_R") + 2, 9);
TString runDirStr("Run ");
runDirStr += rnStr.Atoi();
TDirectoryFile* runDir = (TDirectoryFile*)f.FindObjectAny(runDirStr);
if ( runDir == 0 )
return 0;
TDirectoryFile* tracking = (TDirectoryFile*)runDir->FindObjectAny("Tracking");
if ( tracking == 0 )
return 0;
TDirectoryFile* sistrip = (TDirectoryFile*)runDir->FindObjectAny("SiStrip");
if ( sistrip == 0 )
return 0;
TDirectoryFile* hist = (TDirectoryFile*)tracking->FindObjectAny("reportSummaryMap");
if ( hist == 0 )
return 0;
hist = (TDirectoryFile*)sistrip->FindObjectAny("reportSummaryMap");
if ( hist == 0 )
return 0;
return 1;
}
//TH2F* hist;
//hist = (TH2F*)f.FindObjectAny("reportSummaryMap");
TDirectoryFile* hist;
//hist = (TDirectoryFile*)f.FindObjectAny("reportSummaryContents");
hist = (TDirectoryFile*)f.FindObjectAny("reportSummaryMap");
if (0 == hist)
{
TDirectoryFile* hist2;
hist2 = (TDirectoryFile*)f.FindObjectAny("EventInfo");
if (0 != hist2)
return 1;
//cout << "File is incomplete" << endl;
return 0;
}
else
{
//cout << "File is OK" << endl;
return 1;
}
}
}
示例8: next
void histoBook::loadRootDir( TDirectory* tDir, string path ){
//cout << "histoBook.loadRootDir] Path : " << path << endl;
TList* list;
if ( tDir ){
list = tDir->GetListOfKeys();
} else {
cout << "[histoBook.loadRootDir] Bad Directory Given " << endl;
return;
}
TIter next(list);
TKey* key;
TObject* obj;
while ( (key = (TKey*)next()) ) {
obj = key->ReadObj() ;
if ( 0 == strcmp(obj->IsA()->GetName(),"TDirectoryFile") ){
TDirectoryFile* dir = (TDirectoryFile*)obj;
string nPath = path + dir->GetName();
if ( path == (string) "" )
nPath = path + dir->GetName();
else
nPath = path + "/" + dir->GetName();
cd( nPath );
loadRootDir( dir, nPath );
} else if ( obj ){
if ( (strcmp(obj->IsA()->GetName(),"TProfile")!=0) && (!obj->InheritsFrom("TH2") && (!obj->InheritsFrom("TH1"))) ) {
// not a 1d or 2d histogram
} else {
// add it to the book
//cout << "Adding : " << obj->GetName() << endl;
add( obj->GetName(), (TH1*)obj->Clone( obj->GetName() ) );
}
}
}
}
示例9: GetCoefficient
int GetCoefficient(TString txtFile, TString rootFile)
{
//Extracting the histogram
TFile* f = TFile::Open(rootFile);
TDirectoryFile* dirFile = (TDirectoryFile*)(f->Get("AliAnalysisTaskCalibEmcal"));
TList* list = (TList*)(dirFile->Get("histogram"));
TH2D* cellVAmplitude = (TH2D*)(list->FindObject("_histogram_cell_id_amplitude"));
//cout << __FILE__ << __LINE__ << endl;
//Cell Tower range to analyse
const Int_t CVALow = 0;
const Int_t CVAHigh = 17670;
//cout << __FILE__ << __LINE__ << endl;
//Obtaining a histogram of the Good cells.
TList* goodHistList = new TList;
ifstream goodFile(txtFile);
int numCells = 0;
if(goodFile.is_open())
{
//cout << __FILE__ << __LINE__ << endl;
string line = "";
std::getline(goodFile,line);
int index = 0;
double chi2 = 0.0;
//cout << __FILE__ << __LINE__ << endl;
//for(index = 0; index < 3; index++)
while(goodFile >> index >> chi2)
{
//cout << Form("cell%d",index) << endl;
TH1D* cell = cellVAmplitude->ProjectionY(Form("cell%d",index),index+1,index+1);
goodHistList->Add(cell);
numCells++;
}
}
示例10: it
// Noise section
Stat_t AnalysisClass::doHisto(Char_t * Variable, Char_t *SubDetName, Char_t *Layer,Char_t *label){
TH1 *hHisto=0;
if (debug) cout << d1->GetTitle() << " " << Variable << " " << SubDetName << endl;
pPar[0]=0; pPar[1]=0;
TIter it(d1->GetListOfKeys());
TObject * o;
while ( (o = it()))
{
TObject * d = d1->Get(o->GetName());
if(d->IsA()->InheritsFrom("TDirectory") && strstr(d->GetName(),SubDetName)){
if (debug) cout << "Found SubDet " << SubDetName << endl;
TIter it2(((TDirectoryFile * )d)->GetListOfKeys());
TObject *o2;
while( ( o2 = it2()) ){
TObject *d2 = ((TDirectoryFile * )d)->Get(o2->GetName());
if(d2->IsA()->InheritsFrom("TDirectory") && strstr(d2->GetName(),Layer) ){
if (debug) cout << "Found Layer" << Layer << endl;
TIter it3(((TDirectoryFile * )d2)->GetListOfKeys());
TObject *o3;
while( ( o3 = it3()) ){
TObject *d3 = ((TDirectoryFile * )d2)->Get(o3->GetName());
if(strstr(d3->GetName(),Variable) && strstr(d3->GetName(),label)){
hHisto = (TH1*) d3;
if(hHisto->GetEntries()!=0) {
pPar[0]=hHisto->GetMean();
pPar[1]=hHisto->GetRMS();
if (debug) cout << "Histo Title " << hHisto->GetTitle() << " mean: " << hHisto->GetMean() << " rms: " << hHisto->GetRMS() << " " << hHisto->GetEntries() << endl;
}
else{
cout<<"Empty Histogram "<< hHisto->GetTitle() << endl;
pPar[0]=-10; pPar[1]=-10;
}
}
}
}
}
}
}
return hHisto->GetEntries();
}
示例11: GenerateTDiffPlots
// This will generate the following PDFs:
// -- hDQ_muScTDiff_[DetName]_[BankName].png
void GenerateTDiffPlots(std::string filename) {
std::cout << "Generating pulse shape plots..." << std::endl;
gROOT->Reset();
gROOT->SetStyle("Plain");
gStyle->SetCanvasBorderMode(0); // turn off canvas borders
TFile* file = new TFile(filename.c_str(), "READ");
// The histograms
TH1F *hDQ_muScTDiff;
// Loop through the histograms in the file and get the island histograms (bank and channel names may differ between runs)
TDirectoryFile* dir = (TDirectoryFile*) file->Get("DataQuality_LowLevel");
TIter nextDirKey(dir->GetListOfKeys()); // get the list of keys in the directory (all histograms should be in this folder)
TKey *dirKey;
while ( (dirKey = (TKey*)nextDirKey()) ) {
// Get the names of all the histograms and count them up
if (strcmp(dirKey->ReadObj()->ClassName(), "TH1F") == 0) {
TCanvas *c1 = new TCanvas();
std::string histogram_name = dirKey->ReadObj()->GetName();
std::string histogram_location = "DataQuality_LowLevel/" + histogram_name;
std::string pngname = "data_quality_figs/" + histogram_name + ".png";
if (histogram_name.find("muScTDiff") != std::string::npos) {
file->GetObject(histogram_location.c_str(),hDQ_muScTDiff);
hDQ_muScTDiff->GetYaxis()->SetTitleOffset(1.3);
hDQ_muScTDiff->Draw();
c1->Print(pngname.c_str());
}
}
}
}
示例12: plotProducer2
void plotProducer2(const string& fFile, const string& fPlot, const string& fNameExt, const string& fExt, const string& fSwitch) {
TH2F *h;
TFile file(fFile.c_str());
TDirectoryFile *dir = (TDirectoryFile*)file.Get("offsetAnalysis");
TDirectoryFile *subDir = (TDirectoryFile*)dir->Get("PrimaryVertices");
h = (TH2F*)subDir->Get(fPlot.c_str());
string name = h->GetName();
string fileName = name + "__" + fNameExt + "." + fExt;
TCanvas *c = new TCanvas("c","",1120,800);
c->cd();
h->Draw(fSwitch.c_str());
c->SaveAs(fileName.c_str());
delete c;
}
示例13: plotProducer
void plotProducer(const string& fFile, const string& fPlot, const string& fNameExt, const string& fExt, const string& fSwitch) {
TH1F *h;
TFile file(fFile.c_str());
TDirectoryFile *dir = (TDirectoryFile*)file.Get("offsetAnalysis");
TDirectoryFile *subDir = (TDirectoryFile*)dir->Get("PrimaryVertices");
h = (TH1F*)subDir->Get(fPlot.c_str());
string name = h->GetName();
string fileName = name + "__" + fNameExt + "." + fExt;
TCanvas *c = new TCanvas("c","",1120,800);
c->cd();
//h->SetLineWidth(2);
h->Draw();
if ( fSwitch.find("log") != string::npos ) c->SetLogy();
c->SaveAs(fileName.c_str());
delete c;
}
示例14: GetOption
void mySelector::Terminate()
{
// The Terminate() function is the last function to be called during
// a query. It always runs on the client, it can be used to present
// the results graphically or save the results to file.
TString option = GetOption();
TString output = "gr_";
output += option;
output += ".root";
TFile *hfile = new TFile(output,"RECREATE","FONLL CCbar cross section");
hfile->cd();
const Int_t npoint = eventnumber;
Float_t x[npoint];
Float_t y[npoint];
Float_t ylow[npoint];
Float_t yup[npoint];
for(int i=0;i<npoint;i++)
{
x[i] = Pt[i];
y[i] = Central[i];
ylow[i] = Down[i];
yup[i] = Up[i];
}
//TGraph *grFONLLD0 = new TGraph(npoint,Pt,Central);
TDirectoryFile *ratioErr = new TDirectoryFile(option,"ratio error of scale pp500 to pp200 ");
ratioErr->SetName(option);
ratioErr->Add(hRatio);
TGraph *grFONLLRatio = new TGraph(npoint,x,y);
grFONLLRatio->SetName("grFONLLRatio");
TGraph *grFONLLRatio_u = new TGraph(npoint,x,yup);
grFONLLRatio_u->SetName("grFONLLRatio_u");
TGraph *grFONLLRatio_d = new TGraph(npoint,x,ylow);
grFONLLRatio_d->SetName("grFONLLRatio_d");
grFONLLRatio->Print();
///grFONLLRatio->Write();
ratioErr->Add(grFONLLRatio);
grFONLLRatio_u->Print();
//grFONLLRatio_u->Write();
ratioErr->Add(grFONLLRatio_u);
grFONLLRatio_d->Print();
//grFONLLRatio_d->Write();
ratioErr->Add(grFONLLRatio_d);
ratioErr->Write();
hfile->Print();
hfile->Close();
tNow.Set();
cout<<"----------End of job----------"<<endl;
tNow.Print();
}
示例15: readMCPerform
void readMCPerform(TString filename="QAresults_AOD.root", Int_t drawOnlyDzerDplus = 1, Int_t runNumber=-1)
{
const Int_t totTrending=5;
Float_t vecForTrend[totTrending];
TString varForTrending[totTrending]={"nDzeroCandperEv","nDplusCandperEv","nDsCandperEv","nLcCandperEv","nDstarCandperEv"};
TTree* trtree=new TTree("trendingHF","tree of trending variables");
trtree->Branch("nrun",&runNumber,"nrun/I");
for(Int_t j=0; j<totTrending; j++){
trtree->Branch(varForTrending[j].Data(),&vecForTrend[j],Form("%s/F",varForTrending[j].Data()));
vecForTrend[j]=-99.;
}
TFile *ff = new TFile(filename.Data());
Int_t color[5] = {kBlack, kRed, kGreen, kBlue, kOrange};
TDirectoryFile *dirD2H = (TDirectoryFile *)ff->Get("PWG3_D2H_QA");
if(!dirD2H){
printf("Directory PWG3_D2H_QA not found in file %s\n",filename.Data());
return;
}
TList *listD2H = (TList *)dirD2H->Get("nEntriesQA");
if(!listD2H){
printf("TList nEntriesQA not found in file %s\n",filename.Data());
return;
}
TH1F *hNentries = (TH1F *)listD2H->FindObject("hNentries");
TH2F *hHasSelBit = (TH2F *)listD2H->FindObject("HasSelBit");
TCanvas *cqa = new TCanvas("cqa", "cqa", 800, 500);
cqa->Divide(2, 1);
cqa->cd(1);
hNentries->Draw();
cqa->cd(2);
hHasSelBit->Draw("colz");
cqa->SaveAs("plot_D2HQA.png");
Double_t nEv=hNentries->GetBinContent(10);
vecForTrend[0]=hHasSelBit->GetBinContent(1)/nEv;
vecForTrend[1]=hHasSelBit->GetBinContent(2)/nEv;
vecForTrend[2]=hHasSelBit->GetBinContent(3)/nEv;
vecForTrend[3]=hHasSelBit->GetBinContent(4)/nEv;
vecForTrend[4]=hHasSelBit->GetBinContent(5)/nEv;
TDirectoryFile *dir = (TDirectoryFile *)ff->Get("PWGHF_D2H_MCPerform");
TList* list = 0x0;
if (dir)
{
list = (TList *)dir->Get("coutputDperfQA");
if(list){
TH1F *hn = (TH1F *)list->FindObject("fHistNEvents");
TH1F *hnGenD = (TH1F *)list->FindObject("fHistNGenD");
Int_t entries = hn->GetBinContent(3);
TH2F *fHistNCand = (TH2F *)list->FindObject("fHistNCand");
TH1F *fHistNCandDzero = (TH1F *)fHistNCand->ProjectionY("fHistNCandDzero", 1, 1);
TH1F *fHistNCandDplus = (TH1F *)fHistNCand->ProjectionY("fHistNCandDplus", 2, 2);
TH1F *fHistNCandDstar = (TH1F *)fHistNCand->ProjectionY("fHistNCandDstar", 3, 3);
TH1F *fHistNCandDs = (TH1F *)fHistNCand->ProjectionY("fHistNCandDs", 4, 4);
TH1F *fHistNCandLc = (TH1F *)fHistNCand->ProjectionY("fHistNCandLc", 5, 5);
TString names[5] = {"Dzero", "Dplus", "Dstar", "Ds", "Lc2pkpi"};
TString type[2] = {"Prompt", "Feeddown"};
const Int_t nDecays = 5;
TH2F *fHistXvtxResVsPt[2 * nDecays];
TH2F *fHistYvtxResVsPt[2 * nDecays];
TH2F *fHistZvtxResVsPt[2 * nDecays];
TH2F *fHistInvMassVsPt[2 * nDecays];
TH2F *fHistDecLenVsPt[2 * nDecays];
TH2F *fHistNormDLxyVsPt[2 * nDecays];
TH2F *fHistCosPointVsPt[2 * nDecays];
TH3F *fHistPtYMultGenDauInAcc[2 * nDecays];
TH3F *fHistPtYMultRecoFilt[2 * nDecays];
TProfile *fHistXvtxRes[2 * nDecays];
TProfile *fHistYvtxRes[2 * nDecays];
TProfile *fHistZvtxRes[2 * nDecays];
TProfile *fHistXvtxMean[2 * nDecays];
TProfile *fHistYvtxMean[2 * nDecays];
TProfile *fHistZvtxMean[2 * nDecays];
TH1F *fHistXvtxRes2[2 * nDecays];
TH1F *fHistYvtxRes2[2 * nDecays];
TH1F *fHistZvtxRes2[2 * nDecays];
TProfile *fHistInvMass[2 * nDecays];
TProfile *fHistDecLen[2 * nDecays];
TProfile *fHistCosp[2 * nDecays];
TH1F *fHistInvMassRes[2 * nDecays];
TH1F *hEffPt[2 * nDecays];
TH1F *htemp;
//.........这里部分代码省略.........