26 #include "AliAnalysisManager.h"
40 fhCentralityWeight(0),
42 fUseCentralityWeight(0),
44 fCheckMCCrossSection(kFALSE),
57 TList * outputContainer =
new TList() ;
58 outputContainer->SetName(
"MCWeightHistogram") ;
62 outputContainer->SetOwner(kFALSE);
64 fhXsec =
new TH1F(
"hXsec",
"xsec from pyxsec.root",1,0,1);
65 fhXsec->GetXaxis()->SetBinLabel(1,
"<#sigma>");
66 outputContainer->Add(
fhXsec);
68 fhTrials =
new TH1F(
"hTrials",
"trials root file",1,0,1);
69 fhTrials->GetXaxis()->SetBinLabel(1,
"#sum{ntrials}");
72 return outputContainer ;
89 AliDebug(1,Form(
"MC pT-hard weight: %e",temp));
98 AliDebug(1,Form(
"Centrality %2.1f, weight: %2.2f",
fCentrality,temp));
103 AliDebug(1,Form(
"Event weight %e",weight));
119 Float_t xsection = 0;
121 Float_t avgTrials = 0;
123 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
124 if ( !tree )
return 1;
126 TFile *curfile = tree->GetCurrentFile();
128 if ( !curfile )
return 1;
138 AliInfo(Form(
"%s%d No Histogram fhXsec",(
char*)__FILE__,__LINE__));
146 AliWarning(
"Parameters from file not recovered properly");
150 fhXsec->Fill(
"<#sigma>",xsection);
153 Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
155 if(trials >= nEntries && nEntries > 0.) avgTrials = trials/nEntries;
157 fhTrials->Fill(
"#sum{ntrials}",avgTrials);
159 AliInfo(Form(
"xs %e, trial %e, avg trials %2.2f, events per file %e",
160 xsection,trials,avgTrials,nEntries));
162 AliDebug(1,Form(
"Reading File %s",curfile->GetName()));
168 AliInfo(Form(
"MC Weight: %e",
fMCWeight));
172 AliWarning(Form(
"Average number of trials is NULL!! Set weight to 1: xs : %e, trials %e, entries %e",
173 xsection,trials,nEntries));
194 if(file.Contains(
"root_archive.zip#"))
196 Ssiz_t pos1 = file.Index(
"root_archive",12,0,TString::kExact);
197 Ssiz_t pos = file.Index(
"#",1,pos1,TString::kExact);
198 Ssiz_t pos2 = file.Index(
".root",5,TString::kExact);
199 file.Replace(pos+1,pos2-pos1,
"");
204 file.ReplaceAll(gSystem->BaseName(file.Data()),
"");
209 TFile *fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec.root"));
213 fxsec = TFile::Open(Form(
"%s%s",file.Data(),
"pyxsec_hists.root"));
222 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
229 TList *
list =
dynamic_cast<TList*
>(key->ReadObj());
236 xsec = ((TProfile*)list->FindObject(
"h1Xsec")) ->GetBinContent(1);
237 trials = ((TH1F*) list->FindObject(
"h1Trials"))->GetBinContent(1);
243 TTree *xtree = (TTree*)fxsec->Get(
"Xsection");
251 Double_t xsection = 0;
252 xtree->SetBranchAddress(
"xsection",&xsection);
253 xtree->SetBranchAddress(
"ntrials",&ntrials);
274 fhCentralityWeight =
new TH1F(
"hCentralityWeights",
"Centrality weights",nbins,minCen,maxCen);
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TList * GetCreateOutputHistograms()
Calculate the weight to the event to be applied when filling histograms.
TH1F * fhCentralityWeight
Container of centrality weights.
Float_t fCentrality
Container of centrality percentile.
void InitCentralityWeightsHistogram(Int_t nbins=100, Int_t minCen=0, Int_t maxCen=100)
TH1F * GetCentralityWeightsHistogram()
AliAnaWeights()
Constructor.
TH1F * fhXsec
! Cross section in PYTHIA.
Double_t fMCWeight
pT-hard bin MC weight. It is used only internally.
TString fCurrFileName
Current file path name.
virtual Double_t GetWeight()
Bool_t fUseCentralityWeight
Return the centratlity weight.
Bool_t fCheckMCCrossSection
Retrieve from the pyxsec.root file the cross section, only if requested.
virtual Double_t GetPythiaCrossSection()
static Bool_t GetPythiaInfoFromFile(TString currFile, Float_t &xsec, Float_t &trials)
TH1F * fhTrials
! Number of event trials in PYTHIA.