29 fEnergyTimeHistBefore(0),
31 fEnergyTimeHistAfter(0),
32 fAfterburnerMethod(kNoCorrection),
34 fSetForceClusterE(kFALSE)
53 std::string nonLinMethodStr =
"";
76 fEnergyDistBefore =
new TH1F(
"hEnergyDistBefore",
"hEnergyDistBefore;E_{clus} (GeV)",1500,0,150);
78 fEnergyTimeHistBefore =
new TH2F(
"hEnergyTimeDistBefore",
"hEnergyTimeDistBefore;E_{clus} (GeV);time (s)",1500,0,150,500,-1e-6,1e-6);
80 fEnergyDistAfter =
new TH1F(
"hEnergyDistAfter",
"hEnergyDistAfter;E_{clus} (GeV)",1500,0,150);
82 fEnergyTimeHistAfter =
new TH2F(
"hEnergyTimeDistAfter",
"hEnergyTimeDistAfter;E_{clus} (GeV);time (s)",1500,0,150,500,-1e-6,1e-6);
98 AliVCluster *clus = 0;
108 while ((clusCont = static_cast<AliClusterContainer*>(nextClusCont()))) {
110 if (!clusCont)
return kFALSE;
114 clus =
static_cast<AliVCluster *
>(clusIterator->second);
117 if (!clus->IsEMCAL())
continue;
119 if (clusVec.
Phi_0_2pi() > 4.) {
continue;}
121 Double_t oldEnergy = clus->GetNonLinCorrEnergy();
131 newEnergy = oldEnergy;
134 AliDebugStream(2) <<
"Using non-lin afterburner function No.1" << std::endl;
135 AliDebugStream(2) <<
"old Energy: "<< oldEnergy<<
", new Energy: "<<newEnergy<< std::endl;
139 newEnergy = oldEnergy;
142 AliDebugStream(2) <<
"Using non-lin afterburner function No.2" << std::endl;
143 AliDebugStream(2) <<
"old Energy: "<< oldEnergy<<
", new Energy: "<<newEnergy<< std::endl;
147 newEnergy = oldEnergy;
150 AliDebugStream(2) <<
"Using non-lin afterburner function No.3" << std::endl;
151 AliDebugStream(2) <<
"old Energy: "<< oldEnergy<<
", new Energy: "<<newEnergy<< std::endl;
155 if (oldEnergy > 0.300) {
156 clus->SetNonLinCorrEnergy(newEnergy);
160 AliWarning(Form(
"Cluster energy out of range for correction!, E = %f \n",oldEnergy));
161 clus->SetNonLinCorrEnergy(-100);
179 AliWarning(
"No correction has been determined for this data set yet - switch this component off for this period");
193 if ( namePeriod.CompareTo(
"LHC15P2Pyt8") == 0 ||
194 namePeriod.CompareTo(
"LHC17i4") == 0 ||
195 namePeriod.CompareTo(
"LHC17i4_2") == 0 ||
196 namePeriod.CompareTo(
"LHC17g7") == 0 )
return "kPP13T15P2Pyt8";
197 else if ( namePeriod.CompareTo(
"LHC15P2EPos") == 0 ||
198 namePeriod.CompareTo(
"LHC16d3") == 0 )
return "kPP13T15P2EPOS";
200 else if ( namePeriod.CompareTo(
"LHC15k5a") == 0 ||
201 namePeriod.CompareTo(
"LHC15k5b") == 0 ||
202 namePeriod.CompareTo(
"LHC15k5c") == 0 ||
203 namePeriod.CompareTo(
"LHC15k5a2") == 0 ||
204 namePeriod.CompareTo(
"LHC15k5b2") == 0 ||
205 namePeriod.CompareTo(
"LHC15k5c2") == 0 )
return "k15k5";
209 else if ( namePeriod.CompareTo(
"LHC17e2") == 0 )
return "k17e2";
210 else if ( namePeriod.CompareTo(
"LHC18j3") == 0 )
return "k18j3";
212 else if ( namePeriod.CompareTo(
"LHC16h3") == 0 )
return "k16h3";
216 else if ( namePeriod.CompareTo(
"LHC16g1") == 0 ||
217 namePeriod.CompareTo(
"LHC16g1a") == 0 ||
218 namePeriod.CompareTo(
"LHC16g1b") == 0 || namePeriod.CompareTo(
"LHC16g1b_extra") == 0 ||
219 namePeriod.CompareTo(
"LHC16g1c") == 0 || namePeriod.CompareTo(
"LHC16g1c_extra") == 0 ||
220 namePeriod.CompareTo(
"LHC16h4") == 0)
return "kPbPb5T15HIJING";
221 else if ( namePeriod.CompareTo(
"LHC16k3b") == 0 ||
222 namePeriod.CompareTo(
"LHC16k3b2") == 0 )
return "k16k3b";
227 else if ( namePeriod.CompareTo(
"LHC16P1Pyt8") == 0 ||
228 namePeriod.CompareTo(
"LHC17f6") == 0 ||
229 namePeriod.CompareTo(
"LHC17d17") == 0 ||
230 namePeriod.CompareTo(
"LHC17f5") == 0 ||
231 namePeriod.CompareTo(
"LHC17d3") == 0 ||
232 namePeriod.CompareTo(
"LHC17e5") == 0 ||
233 namePeriod.CompareTo(
"LHC17d20a1") == 0 ||
234 namePeriod.CompareTo(
"LHC17d20a1_extra") == 0 ||
235 namePeriod.CompareTo(
"LHC17d20a2") == 0 ||
236 namePeriod.CompareTo(
"LHC17d20a2_extra") == 0 ||
237 namePeriod.CompareTo(
"LHC17d16") == 0 ||
238 namePeriod.CompareTo(
"LHC17d18") == 0 ||
239 namePeriod.CompareTo(
"LHC17f9") == 0 ||
240 namePeriod.CompareTo(
"LHC17f9_test") == 0||
241 namePeriod.CompareTo(
"LHC18f1") == 0 ||
242 namePeriod.CompareTo(
"LHC18d8") == 0 )
return "kPP13T16P1Pyt8";
243 else if ( namePeriod.CompareTo(
"LHC16P1Pyt8LowB") == 0 ||
244 namePeriod.CompareTo(
"LHC17d1") == 0 )
return "kPP13T16P1Pyt8LowB";
245 else if ( namePeriod.CompareTo(
"LHC16P1EPOS") == 0 ||
246 namePeriod.CompareTo(
"LHC17d20b1") == 0 ||
247 namePeriod.CompareTo(
"LHC17d20b2") == 0 )
return "kPP13T16P1EPOS";
249 else if ( namePeriod.CompareTo(
"LHC16P1JJ") == 0 ||
250 namePeriod.CompareTo(
"LHC17f8a") == 0 ||
251 namePeriod.CompareTo(
"LHC17f8c") == 0 ||
252 namePeriod.CompareTo(
"LHC17f8d") == 0 ||
253 namePeriod.CompareTo(
"LHC17f8e") == 0 ||
254 namePeriod.CompareTo(
"LHC17f8f") == 0 ||
255 namePeriod.CompareTo(
"LHC17f8g") == 0 ||
256 namePeriod.CompareTo(
"LHC17f8h") == 0 ||
257 namePeriod.CompareTo(
"LHC17f8i") == 0 ||
258 namePeriod.CompareTo(
"LHC17f8j") == 0 ||
259 namePeriod.CompareTo(
"LHC17f8k") == 0 )
return "kPP13T16P1JJ";
260 else if ( namePeriod.CompareTo(
"LHC16P1JJLowB") == 0 ||
261 namePeriod.CompareTo(
"LHC17f8b") == 0 )
return "kPP13T16P1JJLowB";
263 else if ( namePeriod.CompareTo(
"LHC17h8a") == 0 )
return "k17h8a";
264 else if ( namePeriod.CompareTo(
"LHC17h8b") == 0 )
return "k17h8b";
265 else if ( namePeriod.CompareTo(
"LHC17h8c") == 0 )
return "k17h8c";
266 else if ( namePeriod.CompareTo(
"LHC17c3b1") == 0 )
return "k17c3b1";
267 else if ( namePeriod.CompareTo(
"LHC17c3a1") == 0 )
return "k17c3a1";
268 else if ( namePeriod.CompareTo(
"LHC17c3b2") == 0 )
return "k17c3b2";
269 else if ( namePeriod.CompareTo(
"LHC17c3a2") == 0 )
return "k17c3a2";
271 else if ( namePeriod.CompareTo(
"LHC17i3a1") == 0 )
return "k17i3a1";
275 else if ( namePeriod.CompareTo(
"LHC17f2a") == 0 )
return "kPPb5T16EPOS";
276 else if ( namePeriod.CompareTo(
"LHC17f2b") == 0 ||
277 namePeriod.CompareTo(
"LHC18f3") == 0 )
return "kPPb5T16DPMJet";
279 else if ( namePeriod.CompareTo(
"LHC17g8a") == 0 )
return "k17g8a";
281 else if ( namePeriod.CompareTo(
"LHC17d2a") == 0 )
return "k17d2a";
282 else if ( namePeriod.CompareTo(
"LHC17d2b") == 0 )
return "k17d2b";
286 else if ( namePeriod.CompareTo(
"LHC17f3a") == 0 )
return "k17f3a";
287 else if ( namePeriod.CompareTo(
"LHC17f3b") == 0 )
return "k17f3b";
288 else if ( namePeriod.CompareTo(
"LHC17f4a") == 0 )
return "k17f4a";
289 else if ( namePeriod.CompareTo(
"LHC17f4b") == 0 )
return "k17f4b";
291 else if ( namePeriod.CompareTo(
"LHC17g8b") == 0 )
return "k17g8b";
292 else if ( namePeriod.CompareTo(
"LHC17g8c") == 0 )
return "k17g8c";
293 else if ( namePeriod.CompareTo(
"LHC18b9b") == 0 )
return "k18b9b";
294 else if ( namePeriod.CompareTo(
"LHC18b9c") == 0 )
return "k18b9c";
298 else if ( namePeriod.CompareTo(
"LHC17k1") ==0 )
return "k17k1";
299 else if ( namePeriod.CompareTo(
"LHC17P1Pyt8NomB") ==0 ||
300 namePeriod.CompareTo(
"LHC17k4") ==0 ||
301 namePeriod.CompareTo(
"LHC17h11") ==0 ||
302 namePeriod.CompareTo(
"LHC17h1") == 0 ||
303 namePeriod.CompareTo(
"LHC17l5") == 0 ||
304 namePeriod.CompareTo(
"LHC18c13") == 0 ||
305 namePeriod.CompareTo(
"LHC18a8") == 0 ||
306 namePeriod.CompareTo(
"LHC18a9") == 0 ||
307 namePeriod.CompareTo(
"LHC18a1") == 0 ||
308 namePeriod.CompareTo(
"LHC18c12") == 0 )
return "kPP13T17P1Pyt8";
309 else if ( namePeriod.CompareTo(
"LHC17h7b") ==0 )
return "kPP13T17P1Pho";
310 else if ( namePeriod.CompareTo(
"LHC17h7a") ==0 )
return "kPP13T17P1Pyt6";
311 else if ( namePeriod.CompareTo(
"LHC17j5a") ==0 ||
312 namePeriod.CompareTo(
"LHC17j5b") ==0 ||
313 namePeriod.CompareTo(
"LHC17j5c") ==0 ||
314 namePeriod.CompareTo(
"LHC17j5d") ==0 ||
315 namePeriod.CompareTo(
"LHC17j5e") ==0 )
return "kPP13T17P1Pyt8Str";
316 else if ( namePeriod.CompareTo(
"LHC17P1Pyt8LowB") ==0 ||
317 namePeriod.CompareTo(
"LHC17h3") == 0 )
return "kPP13T17P1Pyt8LowB";
318 else if ( namePeriod.CompareTo(
"LHC17P1JJ") == 0 ||
319 namePeriod.CompareTo(
"LHC18f5") == 0 )
return "kPP13T17P1JJ";
322 else if ( namePeriod.CompareTo(
"LHC17l4b") == 0 ||
323 namePeriod.CompareTo(
"LHC17l4b_fast") == 0 ||
324 namePeriod.CompareTo(
"LHC17l4b_cent") == 0 ||
325 namePeriod.CompareTo(
"LHC17l4b_cent_woSDD") == 0)
return "k17l4b";
326 else if ( namePeriod.CompareTo(
"LHC17l3b") == 0 ||
327 namePeriod.CompareTo(
"LHC17l3b_fast") == 0 ||
328 namePeriod.CompareTo(
"LHC17l3b_cent") == 0 ||
329 namePeriod.CompareTo(
"LHC17l3b_cent_woSDD") == 0)
return "k17l3b";
330 else if ( namePeriod.CompareTo(
"LHC18j2") == 0 ||
331 namePeriod.CompareTo(
"LHC18j2_fast") == 0 ||
332 namePeriod.CompareTo(
"LHC18j2_cent") == 0 ||
333 namePeriod.CompareTo(
"LHC18j2_cent_woSDD") == 0)
return "k18j2";
335 else if ( namePeriod.Contains(
"LHC18b8") )
return "k18b8";
338 else if ( namePeriod.CompareTo(
"LHC17j7") == 0 ||
339 namePeriod.CompareTo(
"LHC18d2") == 0 ||
340 namePeriod.CompareTo(
"LHC18d2_1") == 0 ||
341 namePeriod.CompareTo(
"LHC18d2_2") == 0 ||
342 namePeriod.CompareTo(
"LHC18d2_3") == 0 )
return "kXeXe5T17HIJING";
346 else if ( namePeriod.CompareTo(
"LHC18P1Pyt8NomB") ==0 ||
347 namePeriod.CompareTo(
"LHC18g4") ==0 ||
348 namePeriod.CompareTo(
"LHC18g5") ==0 ||
349 namePeriod.CompareTo(
"LHC18g6") == 0 )
return "kPP13T18P1Pyt8";
350 else if ( namePeriod.CompareTo(
"LHC18P1Pyt8LowB") ==0 ||
351 namePeriod.CompareTo(
"LHC18h1") ==0 )
return "kPP13T18P1Pyt8LowB";
371 if( namePeriod==
"k16h3" || namePeriod==
"k17e2" || namePeriod ==
"k18j3") {
384 else if(namePeriod==
"k17l3b" || namePeriod==
"k18j2" || namePeriod==
"k17l4b" || namePeriod==
"k18b8") {
398 else if ( namePeriod==
"kPP13T16P1Pyt8" || namePeriod==
"kPP13T17P1Pyt8" || namePeriod==
"kPP13T18P1Pyt8" || namePeriod==
"kPP13T17P1JJ" || namePeriod==
"kPP13T16P1JJ" || namePeriod==
"kPP13T16P1Pyt8LowB" || namePeriod==
"kPP13T17P1Pyt8LowB") {
414 AliWarning(Form(
"There is no defined MC Nonlinearity Afterburner correction for this period (%s)! Nothing will be corrected",namePeriod.Data()));
421 if( namePeriod==
"k16h3" || namePeriod==
"k17e2" || namePeriod ==
"k18j3") {
433 else if(namePeriod==
"k17l3b" || namePeriod==
"k18j2" || namePeriod==
"k17l4b" || namePeriod==
"k18b8") {
446 else if ( namePeriod==
"kPP13T16P1Pyt8" || namePeriod==
"kPP13T17P1Pyt8" || namePeriod==
"kPP13T18P1Pyt8" || namePeriod==
"kPP13T16P1Pyt8LowB" || namePeriod==
"kPP13T17P1Pyt8LowB" || namePeriod==
"kPP13T17P1JJ" || namePeriod==
"kPP13T16P1JJ"){
461 AliWarning(Form(
"There is no defined MC Nonlinearity Afterburner correction for this period (%s)! Nothing will be corrected",namePeriod.Data()));
470 if( namePeriod==
"k16h3" || namePeriod==
"k17e2" || namePeriod ==
"k18j3" || namePeriod==
"k17l3b" || namePeriod==
"k18j2" || namePeriod==
"k17l4b" || namePeriod==
"k18b8") {
484 else if ( namePeriod==
"kPP13T16P1Pyt8" || namePeriod==
"kPP13T17P1Pyt8" || namePeriod==
"kPP13T18P1Pyt8" || namePeriod==
"kPP13T17P1JJ" || namePeriod==
"kPP13T16P1JJ" || namePeriod==
"kPP13T16P1Pyt8LowB" || namePeriod==
"kPP13T17P1Pyt8LowB"){
514 AliWarning(Form(
"There is no defined MC Nonlinearity Afterburner correction for this period (%s)! Nothing will be corrected",namePeriod.Data()));
523 if( namePeriod==
"k16h3" || namePeriod==
"k17e2" || namePeriod ==
"k18j3" || namePeriod==
"k17l3b" || namePeriod==
"k18j2" || namePeriod==
"k17l4b" || namePeriod==
"k18b8") {
536 else if ( namePeriod==
"kPP13T16P1Pyt8" || namePeriod==
"kPP13T17P1Pyt8" || namePeriod==
"kPP13T18P1Pyt8" || namePeriod==
"kPP13T16P1Pyt8LowB" || namePeriod==
"kPP13T17P1Pyt8LowB" || namePeriod==
"kPP13T17P1JJ" || namePeriod==
"kPP13T16P1JJ"){
552 AliWarning(Form(
"There is no defined MC Nonlinearity Afterburner correction for this period (%s)! Nothing will be corrected",namePeriod.Data()));
558 AliWarning(
"You have to specify which method you want to use to get the parameters for the correction. Standard is kPCM_EMCal");
Int_t fNonLinearityAfterburnerFunction
Type of function used for the non linearity afterburner correction.
TH1F * fEnergyDistAfter
!energy distribution after
bidirectional stl iterator over the EMCAL iterable container
!This is determined by fitting the ratio of MC and Data pi0 mass position
Cluster energy non-linearity correction MC afterburner in the EMCal correction framework.
virtual void UserCreateOutputObjects()
void InitNonLinearityParam(TString namePeriod, EMCAfterburnerMethod_t method)
TH1F * fEnergyDistBefore
!energy distribution before
AliEmcalCorrectionClusterNonLinearityMCAfterburner()
TObjArray fClusterCollArray
Cluster collection array.
static const std::map< std::string, AliEmcalCorrectionClusterNonLinearityMCAfterburner::EMCAfterburnerMethod_t > fgkMCNonlinearityAfterburnerMethodMap
Relates string to the MC non-linearity afterburner method enumeration for YAML configuration.
TString fMCPeriod
The MC production name.
!This is determined by fitting MC and Data pi0 mass position respectivley and dividing the fits ...
virtual ~AliEmcalCorrectionClusterNonLinearityMCAfterburner()
Double_t Phi_0_2pi() const
Base class for correction components in the EMCal correction framework.
EMCAfterburnerMethod_t fAfterburnerMethod
The version of the non-linearity afterburner correction (0-3, see enum NonlinearityMCAfterburnerMetho...
Float_t fNLAfterburnerPara[9]
Parameters for the non linearity function.
TList * fOutput
! List of output histograms
Bool_t fCreateHisto
Flag to make some basic histograms.
const AliClusterIterableMomentumContainer all_momentum() const
!This is determined by fitting the ratio of MC and Data pi0 mass position
virtual Bool_t Initialize()
TH2F * fEnergyTimeHistAfter
!energy/time distribution after
void UserCreateOutputObjects()
TH2F * fEnergyTimeHistBefore
!energy/time distribution before
!This is determined by fitting MC and Data pi0 mass position respectivley and dividing the fits ...
TString SummarizeMCProductions(TString namePeriod)
Bool_t fSetForceClusterE
Only for backwards compatibility, force cluster->E() to be set to the cluster non-linearity corrected...
Container structure for EMCAL clusters.
static RegisterCorrectionComponent< AliEmcalCorrectionClusterNonLinearityMCAfterburner > reg
bool GetProperty(std::string propertyName, T &property, bool requiredProperty=true, std::string correctionName="")
Retrieve property.