23 #define AliAnalysisTaskZDCEP_cxx
25 #include "Riostream.h"
34 #include "TParticle.h"
38 #include "TProfile2D.h"
41 #include "TPaveLabel.h"
51 #include "THnSparse.h"
53 #include "AliAODTrack.h"
54 #include "AliAODEvent.h"
55 #include "AliAODZDC.h"
56 #include "TProfile2D.h"
57 #include "TProfile3D.h"
87 for(
Int_t k=0; k<4; k++) {
96 for(
Int_t i=0; i<5; i++) {
102 Int_t dRun15o[] = {244917, 244918, 244975, 244980, 244982, 244983, 245064, 245066, 245068, 246390, 246391, 246392, 246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424, 246276, 246275, 246272, 246271, 246225, 246222, 246217, 246185, 246182, 246181, 246180, 246178, 246153, 246152, 246151, 246115, 246113, 246089, 246087, 246053, 246052, 246049, 246048, 246042, 246037, 246036, 246012, 246003, 246001, 245954, 245952, 245949, 245923, 245833, 245831, 245829, 245705, 245702, 245700, 245692, 245683};
103 Double_t dVtxPosX15o[] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,7.619407e-02, 7.612905e-02, 7.609009e-02, 7.610981e-02, 7.608885e-02, 7.609981e-02, 7.559263e-02, 7.563009e-02, 7.551201e-02, 7.570994e-02, 7.571927e-02, 7.575639e-02, 7.571133e-02, 7.570653e-02, 7.528412e-02, 7.535235e-02, 7.539954e-02, 7.535435e-02, 7.541641e-02, 7.543658e-02, 7.527343e-02, 7.526024e-02, 7.528295e-02, 7.533821e-02, 7.540461e-02, 7.538317e-02, 7.531677e-02, 7.539861e-02, 7.537667e-02, 7.659318e-02, 7.656796e-02, 7.662898e-02, 7.664257e-02, 7.597872e-02, 7.597437e-02, 7.599091e-02, 7.601310e-02, 7.000359e-02, 6.999659e-02, 6.992559e-02, 6.996793e-02, 7.028519e-02, 7.032696e-02, 7.033503e-02, 6.952509e-02, 6.956378e-02, 6.952446e-02, 6.959759e-02, 6.956048e-02, 6.933134e-02, 6.932882e-02, 6.939338e-02, 6.950613e-02, 6.943631e-02, 6.946196e-02, 6.950454e-02, 7.030973e-02, 7.030203e-02, 7.032272e-02, 7.030936e-02, 7.038967e-02, 7.035136e-02, 7.024752e-02, 6.942316e-02, 6.940115e-02, 6.936367e-02, 6.860689e-02, 6.881501e-02, 6.886743e-02, 6.932714e-02, 6.970325e-02, 6.966504e-02, 6.957355e-02, 6.932303e-02, 6.938184e-02, 6.944933e-02, 6.952461e-02, 6.964167e-02};
104 Double_t dVtxPosY15o[] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,3.361709e-01, 3.361818e-01, 3.362205e-01, 3.363199e-01, 3.363092e-01, 3.362369e-01, 3.374328e-01, 3.374148e-01, 3.375140e-01, 3.361514e-01, 3.361743e-01, 3.362329e-01, 3.361395e-01, 3.361633e-01, 3.367675e-01, 3.366963e-01, 3.366845e-01, 3.366490e-01, 3.366937e-01, 3.366825e-01, 3.373764e-01, 3.373762e-01, 3.373721e-01, 3.373705e-01, 3.373943e-01, 3.373675e-01, 3.374071e-01, 3.373368e-01, 3.373442e-01, 3.375773e-01, 3.375333e-01, 3.377335e-01, 3.378285e-01, 3.362674e-01, 3.362492e-01, 3.362604e-01, 3.363473e-01, 3.295003e-01, 3.295046e-01, 3.295761e-01, 3.296100e-01, 3.291527e-01, 3.292071e-01, 3.290824e-01, 3.299371e-01, 3.300008e-01, 3.300078e-01, 3.300391e-01, 3.300740e-01, 3.300345e-01, 3.300776e-01, 3.301195e-01, 3.289427e-01, 3.289736e-01, 3.296084e-01, 3.297025e-01, 3.297724e-01, 3.298166e-01, 3.298278e-01, 3.298682e-01, 3.297381e-01, 3.296875e-01, 3.297720e-01, 3.298361e-01, 3.298561e-01, 3.299325e-01, 3.300111e-01, 3.301161e-01, 3.302630e-01, 3.289954e-01, 3.292915e-01, 3.293319e-01, 3.294174e-01, 3.314355e-01, 3.314431e-01, 3.316189e-01, 3.318682e-01, 3.323906e-01};
105 Double_t dVtxPosZ15o[] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,5.559279e-01, 3.535446e-01, 4.846955e-01, 4.525585e-01, 3.684501e-01, 2.485494e-01, 2.372653e-01, 1.707859e-01, 3.314213e-01, 1.709195e-01, 2.209753e-01, 3.125757e-01, 3.422085e-01, 3.868156e-01, 4.859695e-01, 4.780697e-01, 4.400149e-01, 4.014992e-01, 3.049883e-01, 3.708501e-01, 3.883566e-01, 3.940632e-01, 4.197670e-01, 3.938399e-01, 3.814413e-01, 3.335539e-01, 3.181929e-01, 2.300734e-01, 2.722395e-01, 5.241033e-01, 3.225908e-01, 1.925791e-01, 1.892765e-01, 3.384066e-01, 2.026459e-01, 2.495699e-01, 3.569992e-01, 3.891381e-01, 4.603724e-01, 3.696685e-01, 3.002207e-01, 2.929533e-01, 3.095468e-01, 3.517200e-01, 2.784445e-01, 3.866626e-01, 3.058719e-01, 3.336752e-01, 3.226473e-01, 3.222815e-01, 3.428469e-01, 3.728514e-01, 2.858642e-01, 2.832485e-01, 3.378933e-01, 3.547548e-01, 3.799414e-01, 4.043543e-01, 4.314049e-01, 4.141138e-01, 3.888746e-01, 4.103586e-01, 3.871045e-01, 4.614473e-01, 4.023404e-01, 4.203531e-01, 4.401272e-01, 6.450558e-01, 6.819582e-01, 2.588529e-01, 3.693471e-01, 3.990708e-01, 3.813842e-01, 3.471682e-01, 3.356156e-01, 2.550150e-01, 3.830723e-01, 4.293259e-01};
120 fZDCGainAlpha(0.395),
128 for(
Int_t k=0; k<4; k++) {
137 for(
Int_t i=0; i<5; i++) {
143 Int_t dRun15o[] = {244917, 244918, 244975, 244980, 244982, 244983, 245064, 245066, 245068, 246390, 246391, 246392, 246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424, 246276, 246275, 246272, 246271, 246225, 246222, 246217, 246185, 246182, 246181, 246180, 246178, 246153, 246152, 246151, 246115, 246113, 246089, 246087, 246053, 246052, 246049, 246048, 246042, 246037, 246036, 246012, 246003, 246001, 245954, 245952, 245949, 245923, 245833, 245831, 245829, 245705, 245702, 245700, 245692, 245683};
144 Double_t dVtxPosX15o[] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,7.619407e-02, 7.612905e-02, 7.609009e-02, 7.610981e-02, 7.608885e-02, 7.609981e-02, 7.559263e-02, 7.563009e-02, 7.551201e-02, 7.570994e-02, 7.571927e-02, 7.575639e-02, 7.571133e-02, 7.570653e-02, 7.528412e-02, 7.535235e-02, 7.539954e-02, 7.535435e-02, 7.541641e-02, 7.543658e-02, 7.527343e-02, 7.526024e-02, 7.528295e-02, 7.533821e-02, 7.540461e-02, 7.538317e-02, 7.531677e-02, 7.539861e-02, 7.537667e-02, 7.659318e-02, 7.656796e-02, 7.662898e-02, 7.664257e-02, 7.597872e-02, 7.597437e-02, 7.599091e-02, 7.601310e-02, 7.000359e-02, 6.999659e-02, 6.992559e-02, 6.996793e-02, 7.028519e-02, 7.032696e-02, 7.033503e-02, 6.952509e-02, 6.956378e-02, 6.952446e-02, 6.959759e-02, 6.956048e-02, 6.933134e-02, 6.932882e-02, 6.939338e-02, 6.950613e-02, 6.943631e-02, 6.946196e-02, 6.950454e-02, 7.030973e-02, 7.030203e-02, 7.032272e-02, 7.030936e-02, 7.038967e-02, 7.035136e-02, 7.024752e-02, 6.942316e-02, 6.940115e-02, 6.936367e-02, 6.860689e-02, 6.881501e-02, 6.886743e-02, 6.932714e-02, 6.970325e-02, 6.966504e-02, 6.957355e-02, 6.932303e-02, 6.938184e-02, 6.944933e-02, 6.952461e-02, 6.964167e-02};
145 Double_t dVtxPosY15o[] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,3.361709e-01, 3.361818e-01, 3.362205e-01, 3.363199e-01, 3.363092e-01, 3.362369e-01, 3.374328e-01, 3.374148e-01, 3.375140e-01, 3.361514e-01, 3.361743e-01, 3.362329e-01, 3.361395e-01, 3.361633e-01, 3.367675e-01, 3.366963e-01, 3.366845e-01, 3.366490e-01, 3.366937e-01, 3.366825e-01, 3.373764e-01, 3.373762e-01, 3.373721e-01, 3.373705e-01, 3.373943e-01, 3.373675e-01, 3.374071e-01, 3.373368e-01, 3.373442e-01, 3.375773e-01, 3.375333e-01, 3.377335e-01, 3.378285e-01, 3.362674e-01, 3.362492e-01, 3.362604e-01, 3.363473e-01, 3.295003e-01, 3.295046e-01, 3.295761e-01, 3.296100e-01, 3.291527e-01, 3.292071e-01, 3.290824e-01, 3.299371e-01, 3.300008e-01, 3.300078e-01, 3.300391e-01, 3.300740e-01, 3.300345e-01, 3.300776e-01, 3.301195e-01, 3.289427e-01, 3.289736e-01, 3.296084e-01, 3.297025e-01, 3.297724e-01, 3.298166e-01, 3.298278e-01, 3.298682e-01, 3.297381e-01, 3.296875e-01, 3.297720e-01, 3.298361e-01, 3.298561e-01, 3.299325e-01, 3.300111e-01, 3.301161e-01, 3.302630e-01, 3.289954e-01, 3.292915e-01, 3.293319e-01, 3.294174e-01, 3.314355e-01, 3.314431e-01, 3.316189e-01, 3.318682e-01, 3.323906e-01};
146 Double_t dVtxPosZ15o[] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,5.559279e-01, 3.535446e-01, 4.846955e-01, 4.525585e-01, 3.684501e-01, 2.485494e-01, 2.372653e-01, 1.707859e-01, 3.314213e-01, 1.709195e-01, 2.209753e-01, 3.125757e-01, 3.422085e-01, 3.868156e-01, 4.859695e-01, 4.780697e-01, 4.400149e-01, 4.014992e-01, 3.049883e-01, 3.708501e-01, 3.883566e-01, 3.940632e-01, 4.197670e-01, 3.938399e-01, 3.814413e-01, 3.335539e-01, 3.181929e-01, 2.300734e-01, 2.722395e-01, 5.241033e-01, 3.225908e-01, 1.925791e-01, 1.892765e-01, 3.384066e-01, 2.026459e-01, 2.495699e-01, 3.569992e-01, 3.891381e-01, 4.603724e-01, 3.696685e-01, 3.002207e-01, 2.929533e-01, 3.095468e-01, 3.517200e-01, 2.784445e-01, 3.866626e-01, 3.058719e-01, 3.336752e-01, 3.226473e-01, 3.222815e-01, 3.428469e-01, 3.728514e-01, 2.858642e-01, 2.832485e-01, 3.378933e-01, 3.547548e-01, 3.799414e-01, 4.043543e-01, 4.314049e-01, 4.141138e-01, 3.888746e-01, 4.103586e-01, 3.871045e-01, 4.614473e-01, 4.023404e-01, 4.203531e-01, 4.401272e-01, 6.450558e-01, 6.819582e-01, 2.588529e-01, 3.693471e-01, 3.990708e-01, 3.813842e-01, 3.471682e-01, 3.356156e-01, 2.550150e-01, 3.830723e-01, 4.293259e-01};
154 DefineInput(0,TChain::Class());
155 DefineOutput(1,AliFlowEventSimple::Class());
186 for(
Int_t k=0; k<4; k++) {
199 for(
Int_t i=0; i<5; i++) {
220 fMultSelection = (AliMultSelection*)aod->FindListObject(
"MultSelection");
222 AliWarning(
"WARNING: AliMultSelection object not found ! \n");
226 Int_t RunNum = aod->GetRunNumber();
227 Int_t RunBin=-1, bin=0;
232 if(RunBin==-1)
return;
237 fVtxPos[0] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetX();
238 fVtxPos[1] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetY();
239 fVtxPos[2] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetZ();
251 AliAODZDC *aodZDC = aod->GetZDCData();
253 const Double_t * towZNCraw = aodZDC->GetZNCTowerEnergy();
254 const Double_t * towZNAraw = aodZDC->GetZNATowerEnergy();
258 Double_t Enucl = (RunNum < 209122 ? 1380. : 2511.);
259 Double_t xyZNC[2]={0.,0.}, xyZNA[2]={0.,0.};
260 Double_t towZNC[5]={0.}, towZNA[5]={0.};
266 for(
Int_t i=0; i<5; i++) {
271 for(
Int_t i=0; i<5; i++) {
276 if(RunNum>=245829) towZNA[2] = 0.;
277 Double_t zncEnergy=0., znaEnergy=0.;
278 for(
Int_t i=0; i<5; i++){
279 zncEnergy += towZNC[i];
280 znaEnergy += towZNA[i];
282 if(RunNum>=245829) znaEnergy *= 8./7.;
286 const Double_t x[4] = {-1.75, 1.75, -1.75, 1.75};
287 const Double_t y[4] = {-1.75, -1.75, 1.75, 1.75};
288 Double_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC, EZNC, SumEZNC=0.;
289 Double_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA, EZNA, SumEZNA=0., BadChOr;
290 Bool_t fAllChONZNC=kTRUE, fAllChONZNA=kTRUE;
292 for(
Int_t i=0; i<4; i++){
299 numXZNC += x[i]*wZNC;
300 numYZNC += y[i]*wZNC;
305 EZNA = towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4];
313 numXZNA += x[i]*wZNA;
314 numYZNA += y[i]*wZNA;
319 cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
320 xyZNC[0] = cZNC*numXZNC/denZNC;
321 xyZNC[1] = cZNC*numYZNC/denZNC;
325 xyZNC[0] = xyZNC[1] = 0.;
329 cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
330 xyZNA[0] = cZNA*numXZNA/denZNA;
331 xyZNA[1] = cZNA*numYZNA/denZNA;
335 xyZNA[0] = xyZNA[1] = 0.;
346 fZDCQHist[0] = (TProfile*)(
fZDCCalibList->FindObject(Form(
"Run %d",RunNum))->FindObject(Form(
"fCRCZDCQVecC[%d][%d]",RunNum,0)));
347 fZDCQHist[1] = (TProfile*)(
fZDCCalibList->FindObject(Form(
"Run %d",RunNum))->FindObject(Form(
"fCRCZDCQVecC[%d][%d]",RunNum,1)));
348 fZDCQHist[2] = (TProfile*)(
fZDCCalibList->FindObject(Form(
"Run %d",RunNum))->FindObject(Form(
"fCRCZDCQVecA[%d][%d]",RunNum,0)));
349 fZDCQHist[3] = (TProfile*)(
fZDCCalibList->FindObject(Form(
"Run %d",RunNum))->FindObject(Form(
"fCRCZDCQVecA[%d][%d]",RunNum,1)));
351 for(
Int_t k=0; k<4; k++) {
352 fZDCVtxHist[k] = (TProfile3D*)(
fZDCCalibList->FindObject(Form(
"Run %d",RunNum))->FindObject(Form(
"fCRCZDCQVecVtxPos[%d][%d]",RunNum,k)));
358 for(
Int_t k=0; k<4; k++) {
373 Double_t QCReR=QCRe, QCImR=QCIm, QAReR=QARe, QAImR=QAIm;
388 if(AvQCRe && AvQCIm && QMC>0. && sqrt(QCRe*QCRe+QCIm*QCIm)>1.E-6) {
394 if(AvQARe && AvQAIm && QMA>0. && sqrt(QARe*QARe+QAIm*QAIm)>1.E-6) {
405 if(fVtxPosCor[0] <
fZDCVtxCenHist[fCenBin][0]->GetXaxis()->GetXmin() || fVtxPosCor[0] >
fZDCVtxCenHist[fCenBin][0]->GetXaxis()->GetXmax()) pass = kFALSE;
406 if(fVtxPosCor[1] <
fZDCVtxCenHist[fCenBin][0]->GetYaxis()->GetXmin() || fVtxPosCor[1] >
fZDCVtxCenHist[fCenBin][0]->GetYaxis()->GetXmax()) pass = kFALSE;
407 if(fVtxPosCor[2] <
fZDCVtxCenHist[fCenBin][0]->GetZaxis()->GetXmin() || fVtxPosCor[2] >
fZDCVtxCenHist[fCenBin][0]->GetZaxis()->GetXmax()) pass = kFALSE;
425 QCReR -=
fZDCVtxHist[0]->GetBinContent(
fZDCVtxHist[0]->FindBin(fVtxPosCor[0],fVtxPosCor[1],fVtxPosCor[2]));
426 QCImR -=
fZDCVtxHist[1]->GetBinContent(
fZDCVtxHist[1]->FindBin(fVtxPosCor[0],fVtxPosCor[1],fVtxPosCor[2]));
428 QAReR -=
fZDCVtxHist[2]->GetBinContent(
fZDCVtxHist[2]->FindBin(fVtxPosCor[0],fVtxPosCor[1],fVtxPosCor[2]));
429 QAImR -=
fZDCVtxHist[3]->GetBinContent(
fZDCVtxHist[3]->FindBin(fVtxPosCor[0],fVtxPosCor[1],fVtxPosCor[2]));
445 printf(
"WARNING: no list provided for ZDC Q-vector re-centering ! \n");
473 if (Centrality>0. && Centrality<5.) CenBin=0;
474 if (Centrality>5. && Centrality<10.) CenBin=1;
475 if (Centrality>10. && Centrality<20.) CenBin=2;
476 if (Centrality>20. && Centrality<30.) CenBin=3;
477 if (Centrality>30. && Centrality<40.) CenBin=4;
478 if (Centrality>40. && Centrality<50.) CenBin=5;
479 if (Centrality>50. && Centrality<60.) CenBin=6;
480 if (Centrality>60. && Centrality<70.) CenBin=7;
481 if (Centrality>70. && Centrality<80.) CenBin=8;
482 if (Centrality>80. && Centrality<90.) CenBin=9;
483 if (Centrality>90. && Centrality<100.) CenBin=10;
void GetZDCQVectors(Double_t QAX, Double_t QAY, Double_t QCX, Double_t QCY)
virtual ~AliAnalysisTaskZDCEP()
Double_t fZDCGainAlpha
output list containing QA histograms
virtual void SetZDC2Qsub(Double_t *QVC, Double_t MC, Double_t *QVA, Double_t MA)
AliFlowVector * fZDCFlowVect[2]
virtual void Terminate(Option_t *option)
TList * fHistList
output list containing ZDC q-vectors
virtual void UserCreateOutputObjects()
void SetMult(Double_t mult)
AliAnalysisUtils * fAnalysisUtils
TH1D * fTowerGainEq[2][5]
TArrayD fAvVtxPosX
run-by-run list
virtual void UserExec(Option_t *option)
virtual Int_t GetCenBin(Double_t Centrality)
Int_t fCachedRunNum
ZDC q-vectors.
TProfile2D * fZDCEcomTotHist[4]
TProfile3D * fZDCVtxHist[4]
AliFlowEvent * fFlowEvent
AliMultSelection * fMultSelection
TProfile3D * fZDCVtxCenHist[10][4]