23 #include "TClonesArray.h"
24 #include "TObjString.h"
25 #include "TDatabasePDG.h"
26 #include <TParticle.h>
27 #include <TRefArray.h>
35 #include <THnSparse.h>
40 #include <TVirtualFFT.h>
49 #include "TParticle.h"
50 #include "AliVEvent.h"
51 #include "AliESDCaloCluster.h"
52 #include "AliESDEvent.h"
53 #include "AliAODEvent.h"
55 #include "AliMixedEvent.h"
56 #include "AliAODMCParticle.h"
58 #include "AliAnalysisTaskSE.h"
59 #include "AliRunLoader.h"
60 #include "AliAnalysisManager.h"
61 #include "AliAnalysisTask.h"
63 #include "AliEMCALGeometry.h"
64 #include "AliEPFlattener.h"
65 #include "AliESDEvent.h"
66 #include "AliESDVertex.h"
67 #include "AliESDCaloCells.h"
68 #include "AliESDCaloCluster.h"
69 #include "AliESDEvent.h"
70 #include "AliESDHeader.h"
71 #include "AliESDInputHandler.h"
72 #include "AliESDtrack.h"
73 #include "AliKFParticle.h"
74 #include "AliAODEvent.h"
75 #include "AliVCluster.h"
76 #include "AliCentrality.h"
77 #include "AliEventplane.h"
78 #include "AliOADBContainer.h"
81 #include "AliPHOSGeoUtils.h"
82 #include "AliEMCALGeometry.h"
97 isPhosCali(0), isCentFlat(0),
98 fInputEvent(0x0), fEventPlane(0x0), fCentrality(-999.), fRunNumber(0), fInternalRunNum(0), fFlatContainer(0x0),
100 fTPCFlat(0x0), fV0AFlat(0x0), fV0CFlat(0x0),
101 fEPTPC(-999.), fEPTPCResolution(0.),
102 fEPV0(-999.), fEPV0A(-999.), fEPV0C(-999.),
103 fEPV0AR(-999.), fEPV0CR(-999.), fEPV0R(-999.),
104 fEPV0AR4(-999.), fEPV0AR5(-999.), fEPV0AR6(-999.), fEPV0AR7(-999.),
105 fEPV0CR0(-999.), fEPV0CR1(-999.), fEPV0CR2(-999.), fEPV0CR3(-999.),
107 fHistStatCentrality(0), fHistStatCentralityCorrected(0), fHistStatRunNum(0),
109 fHistEPTPC(0), fHistEPTPCResolution(0),
110 fHistEPV0(0), fHistEPV0A(0), fHistEPV0C(0),
111 fHistEPV0AR(0), fHistEPV0CR(0), fHistEPV0R(0),
112 fHistEPV0AR4(0), fHistEPV0AR7(0), fHistEPV0CR0(0), fHistEPV0CR3(0),
113 fHistEPTPCFlatten(0), fHistEPV0AFlatten(0), fHistEPV0CFlatten(0),
114 fHistEPDiffV0A_V0CR0(0), fHistEPDiffV0A_V0CR3(0), fHistEPDiffV0CR0_V0CR3(0),
115 fHistEPDiffV0C_V0AR4(0), fHistEPDiffV0C_V0AR7(0), fHistEPDiffV0AR4_V0AR7(0), fHistEPDiffV0AR_V0CR(0),
116 fHistEPRBRCosV0A(0), fHistEPRBRSinV0A(0), fHistEPRBRCosV0C(0), fHistEPRBRSinV0C(0), fHistEPRBRCosTPC(0), fHistEPRBRSinTPC(0),
117 fHistClusterEtaPhi(0), fHistClusterEN(0), fHistClusterEtN(0), fHistClusterEM02(0), fHistClusterEtM02(0),
119 fDataV0(0), fDataV0A(0), fDataV0C(0), fDataTPC(0)
137 fFlatContainer->InitFromFile(
"$ALICE_PHYSICS/OADB/PHOS/PHOSflat.root",
"phosFlat");
150 return new TObjString(parList) ;
158 TList * outputList =
new TList() ;
159 outputList->SetName(GetName());
176 fHistEPTPC =
new TH2F(
"fHistEPTPC",
"",100,0,100,100,0.0,TMath::Pi());
182 fHistEPV0 =
new TH2F(
"fHistEPV0",
"",100,0,100,100,0.0,TMath::Pi());
185 fHistEPV0A =
new TH2F(
"fHistEPV0A",
"",100,0,100,100,0.0,TMath::Pi());
188 fHistEPV0C =
new TH2F(
"fHistEPV0C",
"",100,0,100,100,0.0,TMath::Pi());
191 fHistEPV0AR =
new TH2F(
"fHistEPV0AR",
"",100,0,100,100,0.0,TMath::Pi());
194 fHistEPV0CR =
new TH2F(
"fHistEPV0CR",
"",100,0,100,100,0.0,TMath::Pi());
197 fHistEPV0R =
new TH2F(
"fHistEPV0R",
"",100,0,100,100,0.0,TMath::Pi());
200 fHistEPV0AR4 =
new TH2F(
"fHistEPV0AR4",
"",100,0,100,100,0.0,TMath::Pi());
203 fHistEPV0AR7 =
new TH2F(
"fHistEPV0AR7",
"",100,0,100,100,0.0,TMath::Pi());
206 fHistEPV0CR0 =
new TH2F(
"fHistEPV0CR0",
"",100,0,100,100,0.0,TMath::Pi());
209 fHistEPV0CR3 =
new TH2F(
"fHistEPV0CR3",
"",100,0,100,100,0.0,TMath::Pi());
212 fHistEPV0AFlatten =
new TH2F(
"fHistEPV0AFlatten",
"",100,0,100,100,0.0,TMath::Pi());
215 fHistEPV0CFlatten =
new TH2F(
"fHistEPV0CFlatten",
"",100,0,100,100,0.0,TMath::Pi());
218 fHistEPTPCFlatten =
new TH2F(
"fHistEPTPFlatten",
"",100,0,100,100,0.0,TMath::Pi());
260 fHistClusterEtaPhi =
new TH2F(
"fHistClusterEtaPhi",
"Cluster #eta vs #phi",100,-1.0,1.0,100,0.0,6.29);
264 fHistClusterEN =
new TH2F(
"fHistClusterEN",
"N vs E",100,0.0,50.0,30,0.0,30.0);
268 fHistClusterEtN =
new TH2F(
"fHistClusterEtN",
"N vs Cluster E_{T}",100,0.0,50.0,30,0.0,30.0);
272 fHistClusterEM02 =
new TH2F(
"fHistClusterEM02",
"Cluster E vs M02",500,0.0,50.0,100,0.0,10.0);
276 fHistClusterEtM02 =
new TH2F(
"fHistClusterEtM02",
"Cluster E_{T} vs M02",100,0.0,50.0,100,0.0,10.0);
281 Int_t bins[5] = { 500, 500, 100, 100, 100};
282 Double_t min[5] = { 0.0, 0.0, 0, 0.0, -1.0};
283 Double_t max[5] = { 50.0, 10.0, 100, TMath::Pi(), 1.0};
285 fDataV0 =
new THnSparseF(
"fDataV0",
"",5,bins,min,max);
286 fDataV0->GetAxis(0)->SetTitle(
"E_{T} [GeV]");
fDataV0->GetAxis(1)->SetTitle(
"M02");
fDataV0->GetAxis(2)->SetTitle(
"Centrality");
287 fDataV0->GetAxis(3)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0->GetAxis(4)->SetTitle(
"Cos[2*#Delta(#phi)]");
290 fDataV0A =
new THnSparseF(
"fDataV0A",
"",5,bins,min,max);
291 fDataV0A->GetAxis(0)->SetTitle(
"E_{T} [GeV]");
fDataV0A->GetAxis(1)->SetTitle(
"M02");
fDataV0A->GetAxis(2)->SetTitle(
"Centrality");
292 fDataV0A->GetAxis(3)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0A->GetAxis(4)->SetTitle(
"Cos[2*#Delta(#phi)]");
295 fDataV0C =
new THnSparseF(
"fDataV0C",
"",5,bins,min,max);
296 fDataV0C->GetAxis(0)->SetTitle(
"E_{T} [GeV]");
fDataV0C->GetAxis(1)->SetTitle(
"M02");
fDataV0C->GetAxis(2)->SetTitle(
"Centrality");
297 fDataV0C->GetAxis(3)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0C->GetAxis(4)->SetTitle(
"Cos[2*#Delta(#phi)]");
300 fDataTPC =
new THnSparseF(
"fDataTPC",
"",5,bins,min,max);
301 fDataTPC->GetAxis(0)->SetTitle(
"E_{T} [GeV]");
fDataTPC->GetAxis(1)->SetTitle(
"M02");
fDataTPC->GetAxis(2)->SetTitle(
"Centrality");
302 fDataTPC->GetAxis(3)->SetTitle(
"#Delta(#phi) [rad]");
fDataTPC->GetAxis(4)->SetTitle(
"Cos[2*#Delta(#phi)]");
313 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
315 printf(
"------------------------------------------------------\n") ;
324 AliFatal(Form(
"ERROR: No input in AOD with name branch < %s >",
GetInputAODName().
Data()));
339 TObjArray *maps = (TObjArray*)
fFlatContainer->GetObject(fRunNumber,
"phosFlat");
340 fTPCFlat = (AliEPFlattener*)maps->At(0);
341 fV0AFlat = (AliEPFlattener*)maps->At(1);
342 fV0CFlat = (AliEPFlattener*)maps->At(2);
346 AliFatal(
"ERROR: Could not retrieve the Event Plane!");
355 AliDebug(1,
"No cluster found in this event!");
359 for (Int_t i = 0; i < naod; ++i) {
363 Double_t eta = c->Eta();
364 Double_t Et = E / TMath::CosH(eta);
366 Double_t phi = c->Phi();
367 Double_t M02 = c->GetM02();
368 Double_t N = c->GetNCells();
370 Double_t dphiV0 = TVector2::Phi_0_2pi(phi-
fEPV0R);
if(dphiV0>TMath::Pi()) {dphiV0-=TMath::Pi();}
371 Double_t dphiV0A = TVector2::Phi_0_2pi(phi-
fEPV0A);
if(dphiV0A>TMath::Pi()) {dphiV0A-=TMath::Pi();}
372 Double_t dphiV0C = TVector2::Phi_0_2pi(phi-
fEPV0C);
if(dphiV0C>TMath::Pi()) {dphiV0C-=TMath::Pi();}
373 Double_t dphiTPC = TVector2::Phi_0_2pi(phi-
fEPTPC);
if(dphiTPC>TMath::Pi()) {dphiTPC-=TMath::Pi();}
383 dataV0[4] = TMath::Cos(2.0*(dphiV0));
390 dataV0A[3] = dphiV0A;
391 dataV0A[4] = TMath::Cos(2.0*(dphiV0A));
398 dataV0C[3] = dphiV0C;
399 dataV0C[4] = TMath::Cos(2.0*(dphiV0C));
406 dataTPC[3] = dphiTPC;
407 dataTPC[4] = TMath::Cos(2.0*(dphiTPC));
420 AliDebug(1,
"End fill histograms");
429 Bool_t isGoodCent = kFALSE;
430 TRandom3 *rndm =
new TRandom3(0);
431 Double_t Nrndm = rndm->Uniform(0.,1.);
432 Double_t rejectR[10] = {0.864235, 0.855794, 0.838345, 0.837401, 0.838991,
433 0.859132, 0.852702, 0.859955, 0.880277, 1};
436 if (Nrndm < rejectR[0]) isGoodCent = kTRUE;
438 if (Nrndm < rejectR[1]) isGoodCent = kTRUE;
440 if (Nrndm < rejectR[2]) isGoodCent = kTRUE;
442 if (Nrndm < rejectR[3]) isGoodCent = kTRUE;
444 if (Nrndm < rejectR[4]) isGoodCent = kTRUE;
446 if (Nrndm < rejectR[5]) isGoodCent = kTRUE;
448 if (Nrndm < rejectR[6]) isGoodCent = kTRUE;
450 if (Nrndm < rejectR[7]) isGoodCent = kTRUE;
452 if (Nrndm < rejectR[8]) isGoodCent = kTRUE;
454 if (Nrndm < rejectR[9]) isGoodCent = kTRUE;
457 delete rndm; rndm = NULL;
462 if (!centfired.Contains(
"CVLN_B2-B-NOPF-ALLNOTRD") &&
463 !centfired.Contains(
"CVLN_R1-B-NOPF-ALLNOTRD") &&
464 !centfired.Contains(
"CSEMI_R1-B-NOPF-ALLNOTRD"))
return kFALSE;
476 Int_t stdRunNum[45] = {167987, 167988, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362,
477 168458, 168460, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168984,
478 168988, 168992, 169035, 169091, 169094, 169138, 169143, 169144, 169145, 169148,
479 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169835, 169837, 169846,
480 169855, 169858, 169859, 169923, 169965};
482 for (
int i = 0; i < 45; ++i) {
483 if (i%10==0)
fHistStatRunNum->GetXaxis()->SetBinLabel(i+1, Form(
"%i",stdRunNum[i]));
484 if (runnumber==stdRunNum[i])
return i;
510 Double_t qx=0, qy=0, qxr=0, qyr=0;
513 qxr += qx; qyr += qy;
514 fEPV0R = TVector2::Phi_0_2pi(TMath::ATan2(qyr,qxr))/2.0;
virtual void AddToHistogramsName(TString add)
void MakeAnalysisFillHistograms()
AliEPFlattener * fV0CFlat
Double_t fEPTPCResolution
TH2F * fHistEPDiffV0C_V0AR4
TH2F * fHistEPDiffV0C_V0AR7
TH2F * fHistEPDiffV0AR4_V0AR7
virtual TString GetInputAODName() const
TH1D * fHistStatCentrality
virtual AliVEvent * GetInputEvent() const
virtual void SetInputAODName(TString name)
void InitParameters()
Initialize the parameters of the analysis with default values.
virtual Int_t GetEventCentrality() const
AliOADBContainer * fFlatContainer
TH1D * fHistStatCentralityCorrected
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
Base class for CaloTrackCorr analysis algorithms.
virtual TString GetBaseParametersList()
AliEPFlattener * fV0AFlat
void GetVZEROEventPlane(Bool_t isFlatten)
virtual TClonesArray * GetInputAODBranch() const
Int_t GetInternalRunNum(Int_t runnumber)
AliEPFlattener * fTPCFlat
TProfile * fHistEPRBRSinV0A
AliEventplane * fEventPlane
Double_t ApplyFlatteningV0A(Double_t phi, Double_t c)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TProfile * fHistEPRBRSinTPC
TProfile * fHistEPRBRCosV0C
void InitParameters()
Initialize the parameters of the analysis.
TH2F * fHistEPDiffV0A_V0CR0
Double_t ApplyFlatteningTPC(Double_t phi, Double_t c)
Double_t ApplyFlatteningV0C(Double_t phi, Double_t c)
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
TObjString * GetAnalysisCuts()
TProfile * fHistEPRBRCosV0A
TH2F * fHistClusterEtaPhi
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
TProfile * fHistEPRBRCosTPC
TH2F * fHistEPDiffV0AR_V0CR
TH2F * fHistEPDiffV0A_V0CR3
TProfile * fHistEPRBRSinV0C
virtual AliCaloTrackReader * GetReader() const
TList * GetCreateOutputObjects()
TH2F * fHistEPTPCResolution
TH2F * fHistEPDiffV0CR0_V0CR3