18 #include <TClonesArray.h>
22 #include <AliVEventHandler.h>
23 #include <AliAnalysisManager.h>
39 fHistB2BRhoVsLeadJetPt(),
40 fHistB2BRhoVsLeadTrackPt(0),
41 fHistB2BRhoVsNtrack(0),
42 fHistB2BRhoVsLeadClusterE(0),
43 fHistB2BRhoVsNcluster(0),
44 fHistB2BRhoScaledVsCent(0),
45 fHistB2BRhoScaledVsNtrack(0),
46 fHistB2BRhoScaledVsNcluster(0)
59 fHistB2BRhoVsLeadJetPt(),
60 fHistB2BRhoVsLeadTrackPt(0),
61 fHistB2BRhoVsNtrack(0),
62 fHistB2BRhoVsLeadClusterE(0),
63 fHistB2BRhoVsNcluster(0),
64 fHistB2BRhoScaledVsCent(0),
65 fHistB2BRhoScaledVsNtrack(0),
66 fHistB2BRhoScaledVsNcluster(0)
82 Int_t maxTracks = 6000;
97 fHistB2BRhoVsCent =
new TH2F(
"fHistB2BRhoVsCent",
"fHistB2BRhoVsCent", 100, 0, 100, nRhoBins, 0, maxRho);
103 fHistB2BRhoVsNtrack =
new TH2F(
"fHistB2BRhoVsNtrack",
"fHistB2BRhoVsNtrack", 200, 0, maxTracks, nRhoBins, 0, maxRho);
115 fHistB2BRhoVsNcluster =
new TH2F(
"fHistB2BRhoVsNcluster",
"fHistB2BRhoVsNcluster", 50, 0, maxTracks / 4, nRhoBins, 0, maxRho);
127 name = TString::Format(
"%s_fHistB2BRhoVsLeadJetPt", jetCont.first.c_str());
129 fHistB2BRhoVsLeadJetPt[jetCont.first]->GetXaxis()->SetTitle(
"#it{p}_{T,jet} (GeV/c)");
130 fHistB2BRhoVsLeadJetPt[jetCont.first]->GetYaxis()->SetTitle(
"#rho (GeV/#it{c} #times rad^{-1})");
131 fOutput->Add(fHistB2BRhoVsLeadJetPt[jetCont.first]);
169 static Float_t minPhi = (3.0/8.0) * TMath::Pi();
170 static Float_t maxPhi = (5.0/8.0) * TMath::Pi();
174 for (
auto mom : cont->accepted_momentum()) {
175 Double_t phi_diff = TMath::Abs(AliEmcalContainer::RelativePhi(mom.first.Phi(), leadingJet->Phi()));
176 if (phi_diff >= minPhi && phi_diff <= maxPhi) perpPt += mom.first.Pt();
179 Double_t acc = cont->GetEtaSwing() * (maxPhi - minPhi) * 2;
181 return acc > 0 ? perpPt / acc : 0;
195 if (!leadingJet)
return;
207 fOutRho->SetVal(perpPtDensity);
216 if (!r)
return kFALSE;
252 AliError(
"No signal jet collection found. Task will not run!");
257 AliError(
"No particle or cluster array was provided. Task will not run!");
279 AliAnalysisTaskRhoTransDev*
AliAnalysisTaskRhoTransDev::AddTaskRhoTransDev(
TString trackName,
Double_t trackPtCut,
TString clusName,
Double_t clusECut,
TString nRho,
Double_t jetradius,
UInt_t acceptance,
AliJetContainer::EJetType_t jetType ,
AliJetContainer::ERecoScheme_t rscheme,
Bool_t histo,
TString suffix)
284 ::Error(
"AliAnalysisTaskRhoTransDev::AddTaskRhoTransDev",
"No analysis manager to connect to.");
289 AliVEventHandler* handler = mgr->GetInputEventHandler();
291 ::Error(
"AliAnalysisTaskRhoTransDev::AddTaskRhoTransDev",
"This task requires an input event handler");
297 if (handler->InheritsFrom(
"AliESDInputHandler")) {
300 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
305 if (trackName ==
"usedefault") {
306 if (dataType ==
kESD) {
307 trackName =
"Tracks";
309 else if (dataType ==
kAOD) {
310 trackName =
"tracks";
317 if (clusName ==
"usedefault") {
318 if (dataType ==
kESD) {
319 clusName =
"CaloClusters";
321 else if (dataType ==
kAOD) {
322 clusName =
"caloClusters";
329 TString name(TString::Format(
"AliAnalysisTaskRhoTransDev_%s", nRho.Data()));
330 if (!suffix.IsNull()) {
337 ::Warning(
"AliAnalysisTaskRhoTransDev::AddTaskRhoTransDev",
"Not adding the task again, since a task with the same name '%s' already exists", name.Data());
345 partCont->SetMinPt(trackPtCut);
358 jetCont->SetName(
"Signal");
363 mgr->AddTask(rhotask);
366 mgr->ConnectInput(rhotask, 0, mgr->GetCommonInputContainer());
369 contname +=
"_histos";
370 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
371 TList::Class(), AliAnalysisManager::kOutputContainer,
372 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
373 mgr->ConnectOutput(rhotask, 1, coutput1);
TH2 * fHistB2BRhoVsLeadTrackPt
!rho vs. leading track pt
static AliAnalysisTaskRhoTransDev * AddTaskRhoTransDev(TString nTracks="usedefault", Double_t trackPtCut=0.15, TString nClusters="usedefault", Double_t clusECut=0.30, 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="")
AliClusterContainer * AddClusterContainer(std::string branchName, std::string contName="")
TList * fOutput
!output list
EDataType_t
Switch for the data type.
TH2 * fHistB2BRhoScaledVsNtrack
!rhoscaled vs. no. of tracks
TF1 * fScaleFunction
pre-computed scale factor as a function of centrality
AliVCluster * fLeadingCluster
!leading cluster
Int_t fNtracks
!number of tracks
Bool_t VerifyContainers()
Base class for a task that calculates the UE.
Double_t GetPerpPtDensity(AliEmcalContainer *cont, AliVParticle *leadingJet)
Bool_t IsB2BEvent(std::string jetCollName="Signal")
AliAnalysisTaskRhoTransDev()
Container for particles within the EMCAL framework.
EBeamType_t fForceBeamType
forced beam type
Bool_t fCreateHisto
whether or not create histograms
void SetJetPtCut(Float_t cut)
void SetOutRhoName(const char *name)
TH2 * fHistB2BRhoScaledVsCent
!rhoscaled vs. centrality
Float_t fMaxPt
Histogram pt limit.
TH2 * fHistB2BRhoVsNtrack
!rho vs. no. of tracks
void UserCreateOutputObjects()
TH2 * fHistRhoScaledVsNcluster
!rhoscaled vs. no. of clusters
Declaration of class AliAnalysisTaskRhoTransDev.
Class for a task that calculates the UE.
TH2 * fHistRhoVsNcluster
!rho vs. no. of clusters
Float_t fPtBinWidth
Histogram pt bin width.
Int_t fNclusters
!number of clusters
ClassImp(AliAnalysisTaskDeltaPt) AliAnalysisTaskDeltaPt
TH2 * fHistB2BRhoVsNcluster
!rho vs. no. of clusters
AliParticleContainer * AddParticleContainer(std::string branchName, std::string contName="")
AliVParticle * fLeadingParticle
!leading particle
TH2 * fHistB2BRhoVsLeadClusterE
!rho vs. leading cluster energy
TH2 * fHistB2BRhoVsCent
!rho vs. centrality
std::map< std::string, AliParticleContainer * > fParticleCollArray
particle/track collection array
Represent a jet reconstructed using the EMCal jet framework.
TH2 * fHistRhoScaledVsNtrack
!rhoscaled vs. no. of tracks
void SetClusPtCut(Double_t cut)
std::map< std::string, TH2 * > fHistB2BRhoVsLeadJetPt
!rho vs. leading jet pt
std::map< std::string, AliEmcalJet * > fLeadingJet
!leading jet
void AdoptJetContainer(AliJetContainer *cont)
std::map< std::string, AliJetContainer * > fJetCollArray
jet collection array
void SetJetAcceptanceType(UInt_t type)
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.
TH2 * fHistB2BRhoScaledVsNcluster
!rhoscaled vs. no. of clusters
AliRhoParameter * fOutRho
!output rho object
Double_t fCent
!event centrality
Container for jet within the EMCAL jet framework.
void UserCreateOutputObjects()
void SetClusHadCorrEnergyCut(Double_t cut)