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 fHistClusterEtaPhi(0), fHistClusterEN(0), fHistClusterEtN(0), fHistClusterEM02(0), fHistClusterEtM02(0),
118 fDataV0(0), fDataV0A(0), fDataV0C(0), fDataTPC(0)
136 fFlatContainer->InitFromFile(
"$ALICE_PHYSICS/OADB/PHOS/PHOSflat.root",
"phosFlat");
149 return new TObjString(parList) ;
158 outputList->SetName(GetName());
175 fHistEPTPC =
new TH2F(
"fHistEPTPC",
"",100,0,100,100,0.0,TMath::Pi());
181 fHistEPV0 =
new TH2F(
"fHistEPV0",
"",100,0,100,100,0.0,TMath::Pi());
184 fHistEPV0A =
new TH2F(
"fHistEPV0A",
"",100,0,100,100,0.0,TMath::Pi());
187 fHistEPV0C =
new TH2F(
"fHistEPV0C",
"",100,0,100,100,0.0,TMath::Pi());
190 fHistEPV0AR =
new TH2F(
"fHistEPV0AR",
"",100,0,100,100,0.0,TMath::Pi());
193 fHistEPV0CR =
new TH2F(
"fHistEPV0CR",
"",100,0,100,100,0.0,TMath::Pi());
196 fHistEPV0R =
new TH2F(
"fHistEPV0R",
"",100,0,100,100,0.0,TMath::Pi());
249 fHistClusterEtN =
new TH2F(
"fHistClusterEtN",
"N vs Cluster E_{T}",100,0.0,50.0,30,0.0,30.0);
262 Int_t bins[6] = {500, 500, 500, 100, 100, 100};
263 Double_t min[6] = {0, 0.0, 0.0, 0, 0.0, -1.0};
264 Double_t max[6] = {50.0, 50.0, 10.0, 100, TMath::Pi(), 1.0};
266 fDataV0 =
new THnSparseF(
"fDataV0",
"",6,bins,min,max);
267 fDataV0->GetAxis(0)->SetTitle(
"E");
fDataV0->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataV0->GetAxis(2)->SetTitle(
"M02");
268 fDataV0->GetAxis(3)->SetTitle(
"Centrality");
fDataV0->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
271 fDataV0A =
new THnSparseF(
"fDataV0A",
"",6,bins,min,max);
272 fDataV0A->GetAxis(0)->SetTitle(
"E");
fDataV0A->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataV0A->GetAxis(2)->SetTitle(
"M02");
273 fDataV0A->GetAxis(3)->SetTitle(
"Centrality");
fDataV0A->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0A->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
276 fDataV0C =
new THnSparseF(
"fDataV0C",
"",6,bins,min,max);
277 fDataV0C->GetAxis(0)->SetTitle(
"E");
fDataV0C->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataV0C->GetAxis(2)->SetTitle(
"M02");
278 fDataV0C->GetAxis(3)->SetTitle(
"Centrality");
fDataV0C->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0C->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
281 fDataTPC =
new THnSparseF(
"fDataTPC",
"",6,bins,min,max);
282 fDataTPC->GetAxis(0)->SetTitle(
"E");
fDataTPC->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataTPC->GetAxis(2)->SetTitle(
"M02");
283 fDataTPC->GetAxis(3)->SetTitle(
"Centrality");
fDataTPC->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataTPC->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
294 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
296 printf(
"------------------------------------------------------\n") ;
305 AliFatal(Form(
"ERROR: No input in AOD with name branch < %s >",
GetInputAODName().
Data()));
321 fTPCFlat = (AliEPFlattener*)maps->At(0);
322 fV0AFlat = (AliEPFlattener*)maps->At(1);
323 fV0CFlat = (AliEPFlattener*)maps->At(2);
327 AliFatal(
"ERROR: Could not retrieve the Event Plane!");
336 AliDebug(1,
"No cluster found in this event!");
340 for (
Int_t i = 0; i < naod; ++i) {
350 Double_t dphiV0 = TVector2::Phi_0_2pi(phi-
fEPV0R);
if(dphiV0 >TMath::Pi()) {dphiV0 -=TMath::Pi();}
351 Double_t dphiV0A = TVector2::Phi_0_2pi(phi-
fEPV0A);
if(dphiV0A>TMath::Pi()) {dphiV0A-=TMath::Pi();}
352 Double_t dphiV0C = TVector2::Phi_0_2pi(phi-
fEPV0C);
if(dphiV0C>TMath::Pi()) {dphiV0C-=TMath::Pi();}
353 Double_t dphiTPC = TVector2::Phi_0_2pi(phi-
fEPTPC);
if(dphiTPC>TMath::Pi()) {dphiTPC-=TMath::Pi();}
364 dataV0[5] = TMath::Cos(2.0*(dphiV0));
372 dataV0A[4] = dphiV0A;
373 dataV0A[5] = TMath::Cos(2.0*(dphiV0A));
381 dataV0C[4] = dphiV0C;
382 dataV0C[5] = TMath::Cos(2.0*(dphiV0C));
390 dataTPC[4] = dphiTPC;
391 dataTPC[5] = TMath::Cos(2.0*(dphiTPC));
404 AliDebug(1,
"End fill histograms");
413 Bool_t isGoodCent = kFALSE;
414 TRandom3 *rndm =
new TRandom3(0);
415 Double_t Nrndm = rndm->Uniform(0.,1.);
416 Double_t rejectR[10] = {0.864235, 0.855794, 0.838345, 0.837401, 0.838991,
417 0.859132, 0.852702, 0.859955, 0.880277, 1};
420 if (Nrndm < rejectR[0]) isGoodCent = kTRUE;
422 if (Nrndm < rejectR[1]) isGoodCent = kTRUE;
424 if (Nrndm < rejectR[2]) isGoodCent = kTRUE;
426 if (Nrndm < rejectR[3]) isGoodCent = kTRUE;
428 if (Nrndm < rejectR[4]) isGoodCent = kTRUE;
430 if (Nrndm < rejectR[5]) isGoodCent = kTRUE;
432 if (Nrndm < rejectR[6]) isGoodCent = kTRUE;
434 if (Nrndm < rejectR[7]) isGoodCent = kTRUE;
436 if (Nrndm < rejectR[8]) isGoodCent = kTRUE;
438 if (Nrndm < rejectR[9]) isGoodCent = kTRUE;
441 delete rndm; rndm = NULL;
446 if (!centfired.Contains(
"CVLN_B2-B-NOPF-ALLNOTRD") &&
447 !centfired.Contains(
"CVLN_R1-B-NOPF-ALLNOTRD") &&
448 !centfired.Contains(
"CSEMI_R1-B-NOPF-ALLNOTRD"))
return kFALSE;
460 Int_t stdRunNum[45] = {167987, 167988, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362,
461 168458, 168460, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168984,
462 168988, 168992, 169035, 169091, 169094, 169138, 169143, 169144, 169145, 169148,
463 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169835, 169837, 169846,
464 169855, 169858, 169859, 169923, 169965};
466 for (
int i = 0; i < 45; ++i) {
467 if (i%10==0)
fHistStatRunNum->GetXaxis()->SetBinLabel(i+1, Form(
"%i",stdRunNum[i]));
468 if (runnumber==stdRunNum[i])
return i;
497 qxr += qx; qyr += qy;
498 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
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)
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()
TH2F * fHistClusterEtaPhi
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
TH2F * fHistEPDiffV0AR_V0CR
TH2F * fHistEPDiffV0A_V0CR3
virtual AliCaloTrackReader * GetReader() const
TList * GetCreateOutputObjects()
TH2F * fHistEPTPCResolution
TH2F * fHistEPDiffV0CR0_V0CR3