23 #include "TClonesArray.h" 24 #include "TObjString.h" 25 #include "TDatabasePDG.h" 26 #include <TRefArray.h> 34 #include <THnSparse.h> 39 #include <TVirtualFFT.h> 47 #include "AliVEvent.h" 48 #include "AliESDCaloCluster.h" 49 #include "AliESDEvent.h" 50 #include "AliAODEvent.h" 52 #include "AliMixedEvent.h" 54 #include "AliAnalysisTaskSE.h" 55 #include "AliRunLoader.h" 56 #include "AliAnalysisManager.h" 57 #include "AliAnalysisTask.h" 58 #include "AliEMCALGeometry.h" 59 #include "AliEPFlattener.h" 60 #include "AliESDEvent.h" 61 #include "AliESDVertex.h" 62 #include "AliESDCaloCells.h" 63 #include "AliESDCaloCluster.h" 64 #include "AliESDEvent.h" 65 #include "AliESDHeader.h" 66 #include "AliESDInputHandler.h" 67 #include "AliESDtrack.h" 68 #include "AliKFParticle.h" 69 #include "AliAODEvent.h" 70 #include "AliVCluster.h" 71 #include "AliCentrality.h" 72 #include "AliEventplane.h" 73 #include "AliOADBContainer.h" 76 #include "AliPHOSGeoUtils.h" 77 #include "AliEMCALGeometry.h" 93 isPhosCali(0), isCentFlat(0),
94 fInputEvent(0x0), fEventPlane(0x0), fCentrality(-999.), fRunNumber(0), fInternalRunNum(0), fFlatContainer(0x0),
96 fTPCFlat(0x0), fV0AFlat(0x0), fV0CFlat(0x0),
97 fEPTPC(-999.), fEPTPCResolution(0.),
98 fEPV0(-999.), fEPV0A(-999.), fEPV0C(-999.),
99 fEPV0AR(-999.), fEPV0CR(-999.), fEPV0R(-999.),
100 fEPV0AR4(-999.), fEPV0AR5(-999.), fEPV0AR6(-999.), fEPV0AR7(-999.),
101 fEPV0CR0(-999.), fEPV0CR1(-999.), fEPV0CR2(-999.), fEPV0CR3(-999.),
103 fHistStatCentrality(0), fHistStatCentralityCorrected(0), fHistStatRunNum(0),
105 fHistEPTPC(0), fHistEPTPCResolution(0),
106 fHistEPV0(0), fHistEPV0A(0), fHistEPV0C(0),
107 fHistEPV0AR(0), fHistEPV0CR(0), fHistEPV0R(0),
108 fHistEPV0AR4(0), fHistEPV0AR7(0), fHistEPV0CR0(0), fHistEPV0CR3(0),
109 fHistEPTPCFlatten(0), fHistEPV0AFlatten(0), fHistEPV0CFlatten(0),
110 fHistEPDiffV0A_V0CR0(0), fHistEPDiffV0A_V0CR3(0), fHistEPDiffV0CR0_V0CR3(0),
111 fHistEPDiffV0C_V0AR4(0), fHistEPDiffV0C_V0AR7(0), fHistEPDiffV0AR4_V0AR7(0), fHistEPDiffV0AR_V0CR(0),
112 fHistClusterEtaPhi(0), fHistClusterEN(0), fHistClusterEtN(0), fHistClusterEM02(0), fHistClusterEtM02(0),
114 fDataV0(0), fDataV0A(0), fDataV0C(0), fDataTPC(0)
132 fFlatContainer->InitFromFile(
"$ALICE_PHYSICS/OADB/PHOS/PHOSflat.root",
"phosFlat");
145 return new TObjString(parList) ;
154 outputList->SetName(GetName());
171 fHistEPTPC =
new TH2F(
"fHistEPTPC",
"",100,0,100,100,0.0,TMath::Pi());
177 fHistEPV0 =
new TH2F(
"fHistEPV0",
"",100,0,100,100,0.0,TMath::Pi());
180 fHistEPV0A =
new TH2F(
"fHistEPV0A",
"",100,0,100,100,0.0,TMath::Pi());
183 fHistEPV0C =
new TH2F(
"fHistEPV0C",
"",100,0,100,100,0.0,TMath::Pi());
186 fHistEPV0AR =
new TH2F(
"fHistEPV0AR",
"",100,0,100,100,0.0,TMath::Pi());
189 fHistEPV0CR =
new TH2F(
"fHistEPV0CR",
"",100,0,100,100,0.0,TMath::Pi());
192 fHistEPV0R =
new TH2F(
"fHistEPV0R",
"",100,0,100,100,0.0,TMath::Pi());
245 fHistClusterEtN =
new TH2F(
"fHistClusterEtN",
"N vs Cluster E_{T}",100,0.0,50.0,30,0.0,30.0);
258 Int_t bins[6] = {500, 500, 500, 100, 100, 100};
259 Double_t min[6] = {0, 0.0, 0.0, 0, 0.0, -1.0};
260 Double_t max[6] = {50.0, 50.0, 10.0, 100, TMath::Pi(), 1.0};
262 fDataV0 =
new THnSparseF(
"fDataV0",
"",6,bins,min,max);
263 fDataV0->GetAxis(0)->SetTitle(
"E");
fDataV0->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataV0->GetAxis(2)->SetTitle(
"M02");
264 fDataV0->GetAxis(3)->SetTitle(
"Centrality");
fDataV0->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
267 fDataV0A =
new THnSparseF(
"fDataV0A",
"",6,bins,min,max);
268 fDataV0A->GetAxis(0)->SetTitle(
"E");
fDataV0A->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataV0A->GetAxis(2)->SetTitle(
"M02");
269 fDataV0A->GetAxis(3)->SetTitle(
"Centrality");
fDataV0A->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0A->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
272 fDataV0C =
new THnSparseF(
"fDataV0C",
"",6,bins,min,max);
273 fDataV0C->GetAxis(0)->SetTitle(
"E");
fDataV0C->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataV0C->GetAxis(2)->SetTitle(
"M02");
274 fDataV0C->GetAxis(3)->SetTitle(
"Centrality");
fDataV0C->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataV0C->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
277 fDataTPC =
new THnSparseF(
"fDataTPC",
"",6,bins,min,max);
278 fDataTPC->GetAxis(0)->SetTitle(
"E");
fDataTPC->GetAxis(1)->SetTitle(
"E_{T} [GeV]");
fDataTPC->GetAxis(2)->SetTitle(
"M02");
279 fDataTPC->GetAxis(3)->SetTitle(
"Centrality");
fDataTPC->GetAxis(4)->SetTitle(
"#Delta(#phi) [rad]");
fDataTPC->GetAxis(5)->SetTitle(
"Cos[2*#Delta(#phi)]");
290 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
292 printf(
"------------------------------------------------------\n") ;
301 AliFatal(Form(
"ERROR: No input in AOD with name branch < %s >",
GetInputAODName().
Data()));
317 fTPCFlat = (AliEPFlattener*)maps->At(0);
318 fV0AFlat = (AliEPFlattener*)maps->At(1);
319 fV0CFlat = (AliEPFlattener*)maps->At(2);
323 AliFatal(
"ERROR: Could not retrieve the Event Plane!");
332 AliDebug(1,
"No cluster found in this event!");
336 for (
Int_t i = 0; i < naod; ++i) {
346 Double_t dphiV0 = TVector2::Phi_0_2pi(phi-
fEPV0R);
if(dphiV0 >TMath::Pi()) {dphiV0 -=TMath::Pi();}
347 Double_t dphiV0A = TVector2::Phi_0_2pi(phi-
fEPV0A);
if(dphiV0A>TMath::Pi()) {dphiV0A-=TMath::Pi();}
348 Double_t dphiV0C = TVector2::Phi_0_2pi(phi-
fEPV0C);
if(dphiV0C>TMath::Pi()) {dphiV0C-=TMath::Pi();}
349 Double_t dphiTPC = TVector2::Phi_0_2pi(phi-
fEPTPC);
if(dphiTPC>TMath::Pi()) {dphiTPC-=TMath::Pi();}
360 dataV0[5] = TMath::Cos(2.0*(dphiV0));
368 dataV0A[4] = dphiV0A;
369 dataV0A[5] = TMath::Cos(2.0*(dphiV0A));
377 dataV0C[4] = dphiV0C;
378 dataV0C[5] = TMath::Cos(2.0*(dphiV0C));
386 dataTPC[4] = dphiTPC;
387 dataTPC[5] = TMath::Cos(2.0*(dphiTPC));
400 AliDebug(1,
"End fill histograms");
409 Bool_t isGoodCent = kFALSE;
410 TRandom3 *rndm =
new TRandom3(0);
411 Double_t Nrndm = rndm->Uniform(0.,1.);
412 Double_t rejectR[10] = {0.864235, 0.855794, 0.838345, 0.837401, 0.838991,
413 0.859132, 0.852702, 0.859955, 0.880277, 1};
416 if (Nrndm < rejectR[0]) isGoodCent = kTRUE;
418 if (Nrndm < rejectR[1]) isGoodCent = kTRUE;
420 if (Nrndm < rejectR[2]) isGoodCent = kTRUE;
422 if (Nrndm < rejectR[3]) isGoodCent = kTRUE;
424 if (Nrndm < rejectR[4]) isGoodCent = kTRUE;
426 if (Nrndm < rejectR[5]) isGoodCent = kTRUE;
428 if (Nrndm < rejectR[6]) isGoodCent = kTRUE;
430 if (Nrndm < rejectR[7]) isGoodCent = kTRUE;
432 if (Nrndm < rejectR[8]) isGoodCent = kTRUE;
434 if (Nrndm < rejectR[9]) isGoodCent = kTRUE;
437 delete rndm; rndm = NULL;
442 if (!centfired.Contains(
"CVLN_B2-B-NOPF-ALLNOTRD") &&
443 !centfired.Contains(
"CVLN_R1-B-NOPF-ALLNOTRD") &&
444 !centfired.Contains(
"CSEMI_R1-B-NOPF-ALLNOTRD"))
return kFALSE;
456 Int_t stdRunNum[45] = {167987, 167988, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362,
457 168458, 168460, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168984,
458 168988, 168992, 169035, 169091, 169094, 169138, 169143, 169144, 169145, 169148,
459 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169835, 169837, 169846,
460 169855, 169858, 169859, 169923, 169965};
462 for (
int i = 0; i < 45; ++i) {
463 if (i%10==0)
fHistStatRunNum->GetXaxis()->SetBinLabel(i+1, Form(
"%i",stdRunNum[i]));
464 if (runnumber==stdRunNum[i])
return i;
493 qxr += qx; qyr += qy;
494 fEPV0R = TVector2::Phi_0_2pi(TMath::ATan2(qyr,qxr))/2.0;
virtual Double_t Eta() const
virtual Double_t Pt() const
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)
TList * GetCreateOutputObjects()
virtual Int_t GetNCells() const
virtual Int_t GetEventCentrality() const
AliOADBContainer * fFlatContainer
virtual Double_t E() const
TH1D * fHistStatCentralityCorrected
TObjString * GetAnalysisCuts()
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
Container for input particle information on CaloTrackCorr package.
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)
virtual Double_t Phi() const
TH2F * fHistClusterEtaPhi
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
TH2F * fHistEPDiffV0AR_V0CR
TH2F * fHistEPDiffV0A_V0CR3
virtual Float_t GetM02() const
virtual AliCaloTrackReader * GetReader() const
TH2F * fHistEPTPCResolution
TH2F * fHistEPDiffV0CR0_V0CR3