3 // Base class for rho calculation.
4 // Calculates parameterized rho for given centrality independent of input.
10 #include "AliAnalysisManager.h"
11 #include "AliCentrality.h"
12 #include "AliESDEvent.h"
13 #include "AliEmcalJet.h"
15 #include "AliRhoParameter.h"
16 #include "AliVCluster.h"
17 #include "AliVEventHandler.h"
19 #include "AliAnalysisTaskRhoBase.h"
21 ClassImp(AliAnalysisTaskRhoBase)
23 //________________________________________________________________________
24 AliAnalysisTaskRhoBase::AliAnalysisTaskRhoBase() :
36 //________________________________________________________________________
37 AliAnalysisTaskRhoBase::AliAnalysisTaskRhoBase(const char *name) :
38 AliAnalysisTaskSE(name),
49 //________________________________________________________________________
50 void AliAnalysisTaskRhoBase::UserCreateOutputObjects()
52 // Run at beginning of task.
54 AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
56 AliError("Input handler not available!");
60 fRho = new AliRhoParameter(fRhoName, 0);
63 //________________________________________________________________________
64 void AliAnalysisTaskRhoBase::UserExec(Option_t *)
66 // Main loop, called for each event.
75 Double_t rho = GetRhoFactor(fCent);
79 //________________________________________________________________________
80 void AliAnalysisTaskRhoBase::DetermineCent()
82 // Determine centrality.
87 AliCentrality *centrality = InputEvent()->GetCentrality();
90 fCent = centrality->GetCentralityPercentile("V0M");
92 fCent = 99; // probably pp data
95 AliWarning(Form("%s: Centrality negative: %f, assuming 99", GetName(), fCent));
101 //________________________________________________________________________
102 void AliAnalysisTaskRhoBase::ExecOnce()
104 // Initialize some settings that need to be determined in UserExec.
106 // add rho to event if not yet there
107 if (!(InputEvent()->FindListObject(fRhoName))) {
108 InputEvent()->AddObject(fRho);
110 AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fRhoName.Data()));
114 // determine if centrality should be used
115 TString bt(GetBeamType());
121 //_____________________________________________________
122 TString AliAnalysisTaskRhoBase::GetBeamType()
124 // Get beam type : pp-AA-pA
125 // ESDs have it directly, AODs get it from hardcoded run number ranges
127 AliVEvent *event = InputEvent();
129 AliError(Form("%s: Couldn't retrieve event!", GetName()));
135 AliESDEvent *esd = dynamic_cast<AliESDEvent*>(event);
137 const AliESDRun *run = esd->GetESDRun();
138 beamType = run->GetBeamType();
140 Int_t runNumber = event->GetRunNumber();
141 if ((runNumber >= 136851 && runNumber <= 139517) || // LHC10h
142 (runNumber >= 166529 && runNumber <= 170593)) { // LHC11h
152 //________________________________________________________________________
153 Double_t AliAnalysisTaskRhoBase::GetRhoFactor(Double_t cent)
155 // Return rho per centrality.
159 rho = fRhoFunction->Eval(cent);