20 #include <TClonesArray.h> 24 #include <AliVEventHandler.h> 25 #include <AliAnalysisManager.h> 48 fAttachToEvent(kTRUE),
49 fTaskConfigured(kFALSE),
53 fHistRhoVsLeadJetPt(),
54 fHistLeadJetPtVsCent(),
55 fHistLeadJetPtDensityVsCent(),
56 fHistTotJetAreaVsCent(),
57 fHistLeadJetNconstVsCent(),
58 fHistLeadJetNconstVsPt(),
61 fHistRhoVsLeadTrackPt(0),
63 fHistLeadTrackPtVsCent(0),
65 fHistRhoVsLeadClusterE(0),
66 fHistRhoVsNcluster(0),
67 fHistLeadClusterEVsCent(0),
68 fHistNclusterVsCent(0),
69 fHistRhoScaledVsCent(0),
70 fHistRhoScaledVsNtrack(0),
71 fHistRhoScaledVsNcluster(0)
125 ::Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s", GetName());
129 Int_t maxTracks = 6000;
131 Int_t nRhoBins = 500;
144 fHistRhoVsCent =
new TH2F(
"fHistRhoVsCent",
"fHistRhoVsCent", 100, 0, 100, nRhoBins, 0, maxRho);
146 fHistRhoVsCent->GetYaxis()->SetTitle(
"#rho (GeV/#it{c} #times rad^{-1})");
150 fHistRhoVsNtrack =
new TH2F(
"fHistRhoVsNtrack",
"fHistRhoVsNtrack", 200, 0, maxTracks, nRhoBins, 0, maxRho);
152 fHistRhoVsNtrack->GetYaxis()->SetTitle(
"#rho (GeV/#it{c} #times rad^{-1})");
155 fHistNtrackVsCent =
new TH2F(
"fHistNtrackVsCent",
"fHistNtrackVsCent", 100, 0, 100, 200, 0, maxTracks);
172 fHistRhoVsNcluster =
new TH2F(
"fHistRhoVsNcluster",
"fHistRhoVsNcluster", 50, 0, maxTracks / 4, nRhoBins, 0, maxRho);
177 fHistNclusterVsCent =
new TH2F(
"fHistNclusterVsCent",
"fHistNclusterVsCent", 100, 0, 100, 50, 0, maxTracks / 4);
194 name = TString::Format(
"%s_fHistRhoVsLeadJetPt", jetCont.first.c_str());
196 fHistRhoVsLeadJetPt[jetCont.first]->GetXaxis()->SetTitle(
"#it{p}_{T,jet} (GeV/c)");
197 fHistRhoVsLeadJetPt[jetCont.first]->GetYaxis()->SetTitle(
"#rho (GeV/#it{c} #times rad^{-1})");
198 fOutput->Add(fHistRhoVsLeadJetPt[jetCont.first]);
200 name = TString::Format(
"%s_fHistLeadJetPtVsCent", jetCont.first.c_str());
202 fHistLeadJetPtVsCent[jetCont.first]->GetXaxis()->SetTitle(
"Centrality (%)");
203 fHistLeadJetPtVsCent[jetCont.first]->GetYaxis()->SetTitle(
"#it{p}_{T,jet} (GeV/c)");
204 fOutput->Add(fHistLeadJetPtVsCent[jetCont.first]);
206 name = TString::Format(
"%s_fHistLeadJetPtDensityVsCent", jetCont.first.c_str());
208 fHistLeadJetPtDensityVsCent[jetCont.first]->GetXaxis()->SetTitle(
"Centrality (%)");
209 fHistLeadJetPtDensityVsCent[jetCont.first]->GetYaxis()->SetTitle(
"#it{p}_{T,jet} / #it{A}_{jet} (GeV/#it{c})");
210 fOutput->Add(fHistLeadJetPtDensityVsCent[jetCont.first]);
212 name = TString::Format(
"%s_fHistLeadJetNconstVsCent", jetCont.first.c_str());
214 fHistLeadJetNconstVsCent[jetCont.first]->GetXaxis()->SetTitle(
"Centrality (%)");
215 fHistLeadJetNconstVsCent[jetCont.first]->GetYaxis()->SetTitle(
"No. of constituents");
216 fOutput->Add(fHistLeadJetNconstVsCent[jetCont.first]);
221 name = TString::Format(
"%s_fHistJetNconstVsPt_Cent%d_%d", jetCont.first.c_str(), TMath::FloorNint(
fCentBins[i]), TMath::FloorNint(
fCentBins[i+1]));
223 fHistLeadJetNconstVsPt[jetCont.first][i]->GetXaxis()->SetTitle(
"#it{p}_{T,jet} (GeV/#it{c})");
224 fHistLeadJetNconstVsPt[jetCont.first][i]->GetYaxis()->SetTitle(
"No. of constituents");
225 fOutput->Add(fHistLeadJetNconstVsPt[jetCont.first][i]);
229 name = TString::Format(
"%s_fHistTotJetAreaVsCent", jetCont.first.c_str());
231 fHistTotJetAreaVsCent[jetCont.first]->GetXaxis()->SetTitle(
"Centrality (%)");
232 fHistTotJetAreaVsCent[jetCont.first]->GetYaxis()->SetTitle(
"Jet area");
233 fOutput->Add(fHistTotJetAreaVsCent[jetCont.first]);
235 name = TString::Format(
"%s_fHistNjetVsCent", jetCont.first.c_str());
237 fHistNjetVsCent[jetCont.first]->GetXaxis()->SetTitle(
"Centrality (%)");
238 fHistNjetVsCent[jetCont.first]->GetYaxis()->SetTitle(
"No. of jets");
239 fOutput->Add(fHistNjetVsCent[jetCont.first]);
242 name = TString::Format(
"%s_fHistNjetVsNtrack", jetCont.first.c_str());
244 fHistNjetVsNtrack[jetCont.first]->GetXaxis()->SetTitle(
"No. of tracks");
245 fHistNjetVsNtrack[jetCont.first]->GetYaxis()->SetTitle(
"No. of jets");
246 fOutput->Add(fHistNjetVsNtrack[jetCont.first]);
257 fHistRhoScaledVsNtrack =
new TH2F(
"fHistRhoScaledVsNtrack",
"fHistRhoScaledVsNtrack", 200, 0, maxTracks, nRhoBins, 0, maxRho);
359 if (!(InputEvent()->FindListObject(
fOutRhoName))) {
360 InputEvent()->AddObject(
fOutRho);
362 AliFatal(Form(
"%s: Container with same name %s already present. Aborting", GetName(),
fOutRhoName.Data()));
375 AliFatal(Form(
"%s: Container with same name %s already present. Aborting", GetName(),
fOutRhoScaledName.Data()));
419 if (fname.BeginsWith(
"alien://")) {
420 TGrid::Connect(
"alien://");
423 TFile*
file = TFile::Open(path);
425 if (!file || file->IsZombie()) {
426 ::Error(
"AddTaskRho",
"Could not open scale function file");
430 TF1* sfunc =
dynamic_cast<TF1*
>(file->Get(name));
433 ::Info(
"AliAnalysisTaskRhoBaseDev::LoadRhoFunction",
"Scale function %s loaded from file %s.", name, path);
436 ::Error(
"AliAnalysisTaskRhoBaseDev::LoadRhoFunction",
"Scale function %s not found in file %s.", name, path);
466 ::Error(
"AliAnalysisTaskRhoBaseDev::AddTaskRhoBaseDev",
"No analysis manager to connect to.");
471 AliVEventHandler* handler = mgr->GetInputEventHandler();
473 ::Error(
"AliAnalysisTaskRhoBaseDev::AddTaskRhoBaseDev",
"This task requires an input event handler");
479 if (handler->InheritsFrom(
"AliESDInputHandler")) {
482 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
487 if (trackName ==
"usedefault") {
488 if (dataType ==
kESD) {
489 trackName =
"Tracks";
491 else if (dataType ==
kAOD) {
492 trackName =
"tracks";
499 if (clusName ==
"usedefault") {
500 if (dataType ==
kESD) {
501 clusName =
"CaloClusters";
503 else if (dataType ==
kAOD) {
504 clusName =
"caloClusters";
511 TString name(
"AliAnalysisTaskRhoBaseDev");
512 if (!suffix.IsNull()) {
519 ::Warning(
"AliAnalysisTaskRhoBaseDev::AddTaskRhoBaseDev",
"Not adding the task again, since a task with the same name '%s' already exists", name.Data());
539 jetCont->SetName(
"Background");
544 mgr->AddTask(rhotask);
547 mgr->ConnectInput(rhotask, 0, mgr->GetCommonInputContainer());
550 contname +=
"_histos";
551 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
552 TList::Class(), AliAnalysisManager::kOutputContainer,
553 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
554 mgr->ConnectOutput(rhotask, 1, coutput1);
TString fOutRhoName
name of output rho object
AliClusterContainer * AddClusterContainer(std::string branchName, std::string contName="")
std::map< std::string, Int_t > fNjets
!number of jets
void UserCreateOutputObjects()
TList * fOutput
!output list
EDataType_t
Switch for the data type.
TF1 * fScaleFunction
pre-computed scale factor as a function of centrality
AliVCluster * fLeadingCluster
!leading cluster
TString fOutRhoScaledName
name of output scaled rho object
virtual Double_t GetRhoFactor(Double_t cent)
TH2 * fHistRhoVsCent
!rho vs. centrality
Int_t fNtracks
!number of tracks
Base class for a task that calculates the UE.
Bool_t fAttachToEvent
whether or not attach rho to the event objects list
std::map< std::string, TH2 * > fHistRhoVsLeadJetPt
!rho vs. leading jet pt
virtual Bool_t VerifyContainers()
Bool_t fTaskConfigured
!kTRUE if the task is properly configured
std::map< std::string, TH2 * > fHistLeadJetPtVsCent
!leading jet pt vs. centrality
std::vector< double > fCentBins
how many centrality bins
std::map< std::string, TH2 * > fHistTotJetAreaVsCent
!total area covered by jets vs. centrality
TH2 * fHistNtrackVsCent
!no. of tracks vs. centrality
TH2 * fHistRhoVsLeadClusterE
!rho vs. leading cluster energy
Container for particles within the EMCAL framework.
EBeamType_t fForceBeamType
forced beam type
std::map< std::string, TH2 * > fHistLeadJetPtDensityVsCent
!leading jet area vs. centrality
std::map< std::string, TH2 ** > fHistLeadJetNconstVsPt
!leading jet constituents vs. pt
Bool_t fCreateHisto
whether or not create histograms
AliAnalysisTaskRhoBaseDev()
void SetJetPtCut(Float_t cut)
void SetOutRhoName(const char *name)
Float_t fMaxPt
Histogram pt limit.
TF1 * LoadRhoFunction(const char *path, const char *name)
TH2 * fHistRhoScaledVsCent
!rhoscaled vs. centrality
TH2 * fHistLeadClusterEVsCent
!leading cluster energy vs. centrality
Int_t fCentBin
!event centrality bin
TH2 * fHistRhoScaledVsNcluster
!rhoscaled vs. no. of clusters
std::map< std::string, TH2 * > fHistLeadJetNconstVsCent
!leading jet constituents vs. cent
virtual Double_t GetScaleFactor(Double_t cent)
static AliAnalysisTaskRhoBaseDev * AddTaskRhoBaseDev(TString nTracks="usedefault", TString nClusters="usedefault", TString nRho="Rho", Double_t jetradius=0.2, UInt_t acceptance=AliEmcalJet::kTPCfid, AliJetContainer::EJetType_t jetType=AliJetContainer::kChargedJet, AliJetContainer::ERecoScheme_t rscheme=AliJetContainer::pt_scheme, Bool_t histo=kTRUE, TString suffix="")
TH2 * fHistRhoVsNcluster
!rho vs. no. of clusters
std::map< std::string, TH2 * > fHistNjetVsNtrack
!no. of jets vs. no. of tracks
TH2 * fHistRhoVsLeadTrackPt
!rho vs. leading track pt
Base class for a task that studies the UE.
Float_t fPtBinWidth
Histogram pt bin width.
Int_t fNclusters
!number of clusters
AliParticleContainer * AddParticleContainer(std::string branchName, std::string contName="")
AliVParticle * fLeadingParticle
!leading particle
TH2 * fHistNclusterVsCent
!no. of cluster vs. centrality
TH2 * fHistRhoVsNtrack
!rho vs. no. of tracks
std::map< std::string, AliParticleContainer * > fParticleCollArray
particle/track collection array
TFile * file
TList with histograms for a given trigger.
TF1 * fRhoFunction
pre-computed rho as a function of centrality
virtual void CalculateEventProperties()
TH2 * fHistRhoScaledVsNtrack
!rhoscaled vs. no. of tracks
void SetClusPtCut(Double_t cut)
std::map< std::string, AliEmcalJet * > fLeadingJet
!leading jet
void AdoptJetContainer(AliJetContainer *cont)
std::map< std::string, AliJetContainer * > fJetCollArray
jet collection array
virtual void CalculateRho()
void SetJetAcceptanceType(UInt_t type)
Declaration of class AliAnalysisTaskRhoBaseDev.
AliRhoParameter * fOutRhoScaled
!output scaled rho object
void SetClusECut(Double_t cut)
void SetDefaultClusterEnergy(Int_t d)
std::map< std::string, AliClusterContainer * > fClusterCollArray
cluster collection array
Container structure for EMCAL clusters.
void SetMakeGeneralHistograms(Bool_t g)
std::map< std::string, Double_t > fTotJetArea
!total area covered by jets
AliRhoParameter * fOutRho
!output rho object
Double_t fCent
!event centrality
Container for jet within the EMCAL jet framework.
std::map< std::string, TH2 * > fHistNjetVsCent
!no. of jets vs. centrality
TH2 * fHistLeadTrackPtVsCent
!leading track pt vs. centrality
void UserCreateOutputObjects()
void SetClusHadCorrEnergyCut(Double_t cut)