22 #include "Riostream.h"
29 #include "TProfile2D.h"
34 #include "AliMultSelection.h"
35 #include "AliVVertex.h"
37 #include "AliAnalysisManager.h"
42 #include "AliAnalysisManager.h"
43 #include "AliInputEventHandler.h"
44 #include "AliVEvent.h"
46 #include "AliESDEvent.h"
47 #include "AliESDHeader.h"
48 #include "AliESDInputHandler.h"
49 #include "AliESDZDC.h"
50 #include "AliMultiplicity.h"
51 #include "AliAnalysisUtils.h"
52 #include "AliAODHandler.h"
53 #include "AliAODTrack.h"
54 #include "AliAODEvent.h"
55 #include "AliAODHeader.h"
56 #include "AliAODVertex.h"
57 #include "AliAODVZERO.h"
58 #include "AliAODZDC.h"
59 #include "AliAODMCHeader.h"
60 #include "AliMCEventHandler.h"
61 #include "AliMCEvent.h"
62 #include "AliHeader.h"
63 #include "AliVParticle.h"
65 #include "AliAODMCParticle.h"
66 #include "AliAnalysisTaskSE.h"
67 #include "AliGenEventHeader.h"
68 #include "AliPhysicsSelectionTask.h"
69 #include "AliPhysicsSelection.h"
70 #include "AliBackgroundSelection.h"
71 #include "AliTriggerAnalysis.h"
72 #include "AliCentrality.h"
94 fRejectPileUpTight(kFALSE),
95 fRejectPileUp(kFALSE),
98 bRunAveragedQn(kFALSE),
108 fHist_Event_count(NULL),
109 fPileUpMultSelCount(NULL),
111 fHist_ChanWgt_ZDCC(NULL),
112 fHist_ChanWgt_ZDCA(NULL),
113 fHist_Vx_ArrayFinder(NULL),
114 fHist_Vy_ArrayFinder(NULL),
115 fHist_Vz_ArrayFinder(NULL),
116 fHist_Task_config(NULL),
117 fHist_Cent_woZDCcut(NULL),
118 fHist_Cent_wiZDCcut(NULL),
119 fHist_CutParameters(NULL),
120 fHist_Psi1_ZDCC_wGainCorr(NULL),
121 fHist_Psi1_ZDCA_wGainCorr(NULL),
122 fHist_Psi1_ZDCC_wRectCorr(NULL),
123 fHist_Psi1_ZDCA_wRectCorr(NULL),
124 fHist_v2xV1_ZDN_Norm_All(NULL),
125 fHist_v2xV1_ZDN_Refm_All(NULL),
126 fHist_v2xV1_ZDN_Cent_All(NULL),
127 fHist_ZDN_resol_Norm_All(NULL),
128 fHist_ZDN_resol_Cent_All(NULL),
129 fHist_ZDN_resol_Refm_All(NULL),
132 for(
int i=0;i<90;i++){
134 fHist_ZDCA_En_Run[i] = NULL;
135 fHist_ZDCC_En_Run[i] = NULL;
137 for(
int j=0;j<10;j++){
138 fHist_znCx_V0_VxVy[i][j] = NULL;
139 fHist_znCy_V0_VxVy[i][j] = NULL;
140 fHist_znAx_V0_VxVy[i][j] = NULL;
141 fHist_znAy_V0_VxVy[i][j] = NULL;
145 for(
int i=0;i<4;i++){
146 for(
int j=0;j<5;j++){
147 fHist_Qx_vs_Obs_woCorr[i][j] = NULL;
148 fHist_XX_vs_Obs_woCorr[i][j] = NULL;
149 fHist_Qx_vs_Obs_wiCorr[i][j] = NULL;
150 fHist_XX_vs_Obs_wiCorr[i][j] = NULL;
153 for(
int i=0;i<20;i++){
154 fHist_Recenter_ZDCCx[i] = NULL;
155 fHist_Recenter_ZDCCy[i] = NULL;
156 fHist_Recenter_ZDCAx[i] = NULL;
157 fHist_Recenter_ZDCAy[i] = NULL;
160 for(
int i=0;i<2;i++){
166 for(
int i=0;i<10;i++){
167 fFB_Efficiency_Cent[i] = NULL;
168 fHist_v2xV1_ZDN_pTDiff_All[i] = NULL;
170 for(
int j=0;j<4;j++){
171 fHist_v1xV1_ZDN_EtaDiff[j][i] = NULL;
172 fHist_v1xV1_ZDN_pTDiff[j][i] = NULL;
176 for(
int i=0;i<4;i++){
177 fHist_v2xV1_ZDN_Norm_Sep[i] = NULL;
178 fHist_v2xV1_ZDN_Cent_Sep[i] = NULL;
180 for(
int i=0;i<2;i++){
181 fHist_ZDN_resol_Norm_Sep[i] = NULL;
182 fHist_ZDN_resol_Cent_Sep[i] = NULL;
185 DefineInput(1, AliFlowEventSimple::Class());
186 DefineOutput(1,TList::Class());
187 DefineOutput(2,TList::Class());
190 fAnalysisSet=
"DoGainEq";
201 fMultSelection(NULL),
209 fRejectPileUpTight(kFALSE),
210 fRejectPileUp(kFALSE),
212 bFillZDCQAon(kFALSE),
213 bRunAveragedQn(kFALSE),
214 bApplyRecent(kFALSE),
223 fHist_Event_count(NULL),
224 fPileUpMultSelCount(NULL),
226 fHist_ChanWgt_ZDCC(NULL),
227 fHist_ChanWgt_ZDCA(NULL),
228 fHist_Vx_ArrayFinder(NULL),
229 fHist_Vy_ArrayFinder(NULL),
230 fHist_Vz_ArrayFinder(NULL),
231 fHist_Task_config(NULL),
232 fHist_Cent_woZDCcut(NULL),
233 fHist_Cent_wiZDCcut(NULL),
234 fHist_CutParameters(NULL),
235 fHist_Psi1_ZDCC_wGainCorr(NULL),
236 fHist_Psi1_ZDCA_wGainCorr(NULL),
237 fHist_Psi1_ZDCC_wRectCorr(NULL),
238 fHist_Psi1_ZDCA_wRectCorr(NULL),
239 fHist_v2xV1_ZDN_Norm_All(NULL),
240 fHist_v2xV1_ZDN_Refm_All(NULL),
241 fHist_v2xV1_ZDN_Cent_All(NULL),
242 fHist_ZDN_resol_Norm_All(NULL),
243 fHist_ZDN_resol_Cent_All(NULL),
244 fHist_ZDN_resol_Refm_All(NULL),
247 for(
int i=0;i<90;i++){
252 for(
int j=0;j<10;j++){
260 for(
int i=0;i<4;i++){
261 for(
int j=0;j<5;j++){
268 for(
int i=0;i<20;i++){
276 for(
int i=0;i<2;i++){
282 for(
int i=0;i<10;i++){
286 for(
int j=0;j<4;j++){
292 for(
int i=0;i<4;i++){
296 for(
int i=0;i<2;i++){
339 Int_t runArray_2010[89] = {139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137243, 137236, 137235, 137232, 137231, 137162, 137161};
341 Int_t runArray_2011[68] = {167915, 168115, 168460, 169035, 169238, 169859, 170228, 167920, 168310, 168464, 169091, 169411, 169923, 170230, 167985, 168311, 168467, 169094, 169415, 170027, 170268, 167987, 168322, 168511, 169138, 169417, 170081, 170269, 167988, 168325, 168512, 169144, 169835, 170155, 170270, 168069, 168341, 168514, 169145, 169837, 170159, 170306, 168076, 168342, 168777, 169148, 169838, 170163, 170308, 168105, 168361, 168826, 169156, 169846, 170193, 170309, 168107, 168362, 168988, 169160, 169855, 170203, 168108, 168458, 168992, 169167, 169858, 170204};
343 Int_t runArray_2015[90] = {246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246871, 246870, 246867, 246865, 246864, 246859, 246858, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246676, 246675, 246540, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424, 246276, 246275, 246272, 246271, 246225, 246222, 246217, 246185, 246182, 246181, 246180, 246178, 246153, 246152, 246151, 246148, 246115, 246113, 246089, 246087, 246053, 246052, 246049, 246048, 246042, 246037, 246036, 246012, 246003, 246001, 245963, 245954, 245952, 245949, 245923, 245833, 245831, 245829, 245705, 245702, 245700, 245692, 245683};
380 fPileUpCount =
new TH1F(
"fPileUpCount",
"fPileUpCount", 9, 0., 9.);
383 fPileUpCount->GetXaxis()->SetBinLabel(3,
"RefMultiplicityComb08");
384 fPileUpCount->GetXaxis()->SetBinLabel(4,
"IncompleteDAQ");
385 fPileUpCount->GetXaxis()->SetBinLabel(5,
"abs(V0M-CL1)>7.5");
387 fPileUpCount->GetXaxis()->SetBinLabel(7,
"inconsistentVtx");
388 fPileUpCount->GetXaxis()->SetBinLabel(8,
"multESDTPCDif");
389 fPileUpCount->GetXaxis()->SetBinLabel(9,
"extraPileUpMultSel");
403 fHist_Task_config =
new TH1F(
"fTask_Configuration",
"Task Configuration", 20, 0., 20.);
469 AliDebug(2,
"\n\n !!** WARNING ***!! \n cuts not defined for DATASET: %s\n ...EXIT...\n\n)");
509 TString sNameQn[4] = {
"Xa",
"Xc",
"Ya",
"Yc"};
510 TString sNameQn2[4] = {
"XaXc",
"YaYc",
"XcYa",
"YcXa"};
511 TString sNameVs[5] = {
"Cent",
"Mult",
"Vx",
"Vy",
"Vz"};
512 Int_t nBinNumVs[5] = {100, 100, 50, 50, 400};
517 for(
int i=0;i<4;i++) {
518 for(
int j=0;j<5;j++) {
520 sprintf(name,
"fHist_%s_vs_%s_woCorr",static_cast<const char*>(sNameQn[i]),static_cast<const char*>(sNameVs[j]));
524 sprintf(name,
"fHist_%s_vs_%s_woCorr",static_cast<const char*>(sNameQn2[i]),static_cast<const char*>(sNameVs[j]));
529 sprintf(name,
"fHist_%s_vs_%s_woCorrCosSin",static_cast<const char*>(sNameQn[i]),static_cast<const char*>(sNameVs[j]));
532 sprintf(name,
"fHist_%s_vs_%s_wiCorr",static_cast<const char*>(sNameQn[i]),static_cast<const char*>(sNameVs[j]));
538 sprintf(name,
"fHist_%s_vs_%s_woCorrCosSin",static_cast<const char*>(sNameQn2[i]),static_cast<const char*>(sNameVs[j]));
541 sprintf(name,
"fHist_%s_vs_%s_wiCorr",static_cast<const char*>(sNameQn2[i]),static_cast<const char*>(sNameVs[j]));
559 printf(
"\n\n::UserCreateOutPutObject()\n Vz Binning more than 20 not allowed\n ==> Exit <== \n\n");
563 const int VzBinIter = (
const int)
vzBin;
575 for(
int j=0;j<VzBinIter;j++) {
589 for(
int j=0;j<VzBinIter;j++) {
590 fHist_znCx_V0_VxVy[0][j] =
new TProfile2D(Form(
"fHist_znCx_V0_Run%d_Vz%d",0,j+1),
"",NbinVt,0,NbinVt,90,0,90);
591 fHist_znCy_V0_VxVy[0][j] =
new TProfile2D(Form(
"fHist_znCy_V0_Run%d_Vz%d",0,j+1),
"",NbinVt,0,NbinVt,90,0,90);
592 fHist_znAx_V0_VxVy[0][j] =
new TProfile2D(Form(
"fHist_znAx_V0_Run%d_Vz%d",0,j+1),
"",NbinVt,0,NbinVt,90,0,90);
593 fHist_znAy_V0_VxVy[0][j] =
new TProfile2D(Form(
"fHist_znAy_V0_Run%d_Vz%d",0,j+1),
"",NbinVt,0,NbinVt,90,0,90);
609 Double_t centRange[12] = {0,5,10,20,30,40,50,60,70,80,90,100};
610 Double_t pTRange[21] = {0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0,3.3,3.6,4.0,4.5,5.0};
611 TString sNameComp[4] = {
"uxCx",
"uyCy",
"uxAx",
"uyAy"};
638 for(
int i=0; i<4; i++) {
639 sprintf(name,
"fHist_v1_%s_ZDN_Norm",static_cast<const char*>(sNameComp[i]));
644 sprintf(name,
"fHist_v1_%s_ZDN_Cent",static_cast<const char*>(sNameComp[i]));
667 for(
int i=0; i<10; i++) {
668 sprintf(name,
"fHist_v2xV1_ZDN_pTDiff_Cent%d",i);
675 for(
int i=0; i<10; i++) {
676 for(
int j=0; j<4; j++) {
677 sprintf(name,
"fHist_%s_ZDN_EtaDiff_Cent%d",static_cast<const char*>(sNameComp[j]),i);
682 sprintf(name,
"fHist_%s_ZDN_pTDiff_Cent%d",static_cast<const char*>(sNameComp[j]),i);
690 TH1F *fCent_fromDATA;
693 fCent_fromDATA = (TH1F *)
fListZDCQxy->FindObject(
"fHist_Cent_afterr_ZDCcut");
696 printf(
"\n\n ******** Running without Centrality weight !!******** \n\n");
697 fCent_fromDATA =
new TH1F(
"fCent_DATA",
"Centrality distribution",100,0,100);
698 for(
int i=1;i<=fCent_fromDATA->GetNbinsX();i++){
699 fCent_fromDATA->SetBinContent(i,100);
708 for(
int i=1;i<=fCent_fromDATA->GetNbinsX();i++){
709 Content = fCent_fromDATA->GetBinContent(i);
710 if(maxCount < Content){
716 fWeight_Cent =
new TH1F(
"fWeight_Cent",
"Weight for centrality",100,0,100);
720 Content = fCent_fromDATA->GetBinContent(i);
721 error = fCent_fromDATA->GetBinError(i);
723 weight = maxCount/Content;
740 for(
int i=0;i<10;i++) {
746 printf(
"\n\n !!***** Warning *****!! \n TList for FilterBit efficiency not found !!\n\n");
747 for(
int i=0;i<10;i++){
836 printf(
"\n\n::UserCreateOutPutObject()\n Runflag= %d, dataset: %s, VxyBin = %d, Analysis= %s\n\n",
frunflag,
fDataSet.Data(),NbinVt,
fAnalysisSet.Data());
844 float stepCount = 0.5;
856 printf(
"\n ... ::UserExec = no aod found..... \n");
864 AliAODVertex *pVertex = aod->GetPrimaryVertex();
866 Vxyz[0] = pVertex->GetX();
867 Vxyz[1] = pVertex->GetY();
868 Vxyz[2] = pVertex->GetZ();
871 if(Vxyz[2] >=
VzCut[1] || Vxyz[2] <=
VzCut[0])
return;
876 if(Vxyz[0] >=
VxCut[1] || Vxyz[0] <=
VxCut[0])
return;
881 if(Vxyz[1] >=
VyCut[1] || Vxyz[1] <=
VyCut[0])
return;
891 Int_t runNumber = aod->GetRunNumber();
892 Int_t runindex = -111;
902 printf(
"\n ... **WARNING** \n::UserExec() runnumber not listed.\n EXIT..\n");
924 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
925 centrCL1 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL1");
926 centrCL0 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL0");
927 centrTRK = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"TRK");
930 fMultSelection = (AliMultSelection*) InputEvent()->FindListObject(
"MultSelection");
932 printf(
"\n\n **WARNING** ::UserExec() AliMultSelection object not found.\n\n");
950 Int_t isPileup = aod->IsPileupFromSPD(3);
955 if(((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
959 if(aod->IsIncompleteDAQ()) {
965 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
966 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
968 if(vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
973 double covTrc[6], covSPD[6];
974 vtTrc->GetCovarianceMatrix(covTrc);
975 vtSPD->GetCovarianceMatrix(covSPD);
977 double dz = vtTrc->GetZ() - vtSPD->GetZ();
979 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
980 double errTrc = TMath::Sqrt(covTrc[5]);
981 double nsigTot = dz/errTot;
982 double nsigTrc = dz/errTrc;
984 if(TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
1021 Int_t isPileup = aod->IsPileupFromSPD(3);
1027 if(((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
1032 if(aod->IsIncompleteDAQ()) {
1037 if(fabs(centrV0M-centrCL1)>7.5) {
1043 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
1044 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
1046 if (vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
1051 double covTrc[6], covSPD[6];
1052 vtTrc->GetCovarianceMatrix(covTrc);
1053 vtSPD->GetCovarianceMatrix(covSPD);
1055 double dz = vtTrc->GetZ() - vtSPD->GetZ();
1057 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
1058 double errTrc = TMath::Sqrt(covTrc[5]);
1059 double nsigTot = dz/errTot;
1060 double nsigTrc = dz/errTrc;
1062 if(TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
1068 const Int_t nTracks = aod->GetNumberOfTracks();
1069 Int_t multEsd = ((AliAODHeader*)aod->GetHeader())->GetNumberOfESDTracks();
1072 Int_t multTrkBefC = 0;
1073 Int_t multTrkTOFBefC = 0;
1076 for(
Int_t it = 0; it < nTracks; it++) {
1077 AliAODTrack* aodTrk = (AliAODTrack*)aod->GetTrack(it);
1089 if(aodTrk->TestFilterBit(128))
1095 Double_t multESDTPCDif = multEsdn - multTPCn*3.38;
1103 if(BisPileup==kFALSE) {
1105 if(!
fMultSelection->GetThisEventIsNotPileupMV()) BisPileup=kTRUE;
1106 if(!
fMultSelection->GetThisEventIsNotPileupInMultBins()) BisPileup=kTRUE;
1107 if(!
fMultSelection->GetThisEventHasNoInconsistentVertices()) BisPileup=kTRUE;
1108 if(!
fMultSelection->GetThisEventPassesTrackletVsCluster()) BisPileup=kTRUE;
1109 if(!
fMultSelection->GetThisEventIsNotIncompleteDAQ()) BisPileup=kTRUE;
1110 if(!
fMultSelection->GetThisEventHasGoodVertex2016()) BisPileup=kTRUE;
1144 for(
int i=0; i<
vzBin; i++) {
1160 Double_t ChanWgtZDCC[4] = {1.,1.,1.,1.};
1161 Double_t ChanWgtZDCA[4] = {1.,1.,1.,1.};
1163 Int_t iCentBin = abs(EvtCent) + 1;
1168 for(
int ich=1; ich<=4; ich++){
1169 iWgtBin = 4*(iCentBin-1) + ich;
1186 AliAODZDC *aodZDC = aod->GetZDCData();
1187 Float_t fZDCGainAlpha = 0.500;
1195 const Double_t * towZNC = aodZDC->GetZNCTowerEnergy();
1196 const Double_t * towZPC = aodZDC->GetZPCTowerEnergy();
1197 const Double_t * towZNA = aodZDC->GetZNATowerEnergy();
1198 const Double_t * towZPA = aodZDC->GetZPATowerEnergy();
1200 const Double_t * towZNClg = aodZDC->GetZNCTowerEnergyLR();
1201 const Double_t * towZNAlg = aodZDC->GetZNATowerEnergyLR();
1206 for(
Int_t it=0; it<5; it++) {
1207 towZPClg[it] = 8*towZPC[it];
1208 towZPAlg[it] = 8*towZNA[it];
1211 Int_t BadChannel = 0;
1217 for(
int i=0; i<4; i++) {
1223 if(BadChannel>=2)
return;
1231 for(
int i=0; i<4; i++) {
1237 if(BadChannel>=2)
return;
1258 Float_t zncEnergy=0., znaEnergy=0.;
1297 for(
int i=0;i<5;i++){
1298 towCalibZNC[i] = towZNC[i];
1299 towCalibZNA[i] = towZNA[i];
1303 for(
int i=1;i<5;i++){
1304 if(towCalibZNC[i] < 0) towCalibZNC[i] = 0;
1305 if(towCalibZNA[i] < 0) towCalibZNA[i] = 0;
1310 for(
int ich=0; ich<5; ich++) {
1319 for(
int i=0;i<4;i++){
1320 towCalibZNC[i+1] = ChanWgtZDCC[i]*towCalibZNC[i+1];
1321 if(ChanWgtZDCA[i] < 4.){
1322 towCalibZNA[i+1] = ChanWgtZDCA[i]*towCalibZNA[i+1];
1326 if(ChanWgtZDCA[1] >= 4.0){
1327 towCalibZNA[2] = towCalibZNA[0] - towCalibZNA[1] - towCalibZNA[3] - towCalibZNA[4];
1331 for(
Int_t i=0; i<5; i++){
1332 zncEnergy += towCalibZNC[i];
1333 znaEnergy += towCalibZNA[i];
1337 Double_t AvTowerGain[8] = {1., 1., 1., 1., 1., 1., 1., 1.};
1339 const Float_t x[4] = {-1.75, 1.75,-1.75, 1.75};
1340 const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
1342 Float_t numXZNC=0., numYZNC=0., denZNC=0., wZNC;
1343 Float_t numXZNA=0., numYZNA=0., denZNA=0., wZNA;
1345 for(
Int_t i=0; i<4; i++) {
1346 if(towCalibZNC[i+1]>0.) {
1347 wZNC = TMath::Power(towCalibZNC[i+1], fZDCGainAlpha)*AvTowerGain[i];
1348 numXZNC += x[i]*wZNC;
1349 numYZNC += y[i]*wZNC;
1353 if(towCalibZNA[i+1]>0.) {
1354 wZNA = TMath::Power(towCalibZNA[i+1], fZDCGainAlpha)*AvTowerGain[i+4];
1355 numXZNA += x[i]*wZNA;
1356 numYZNA += y[i]*wZNA;
1362 xyZNC[0] = numXZNC/denZNC;
1363 xyZNC[1] = numYZNC/denZNC;
1371 xyZNA[0] = numXZNA/denZNA;
1372 xyZNA[1] = numYZNA/denZNA;
1382 xyZNA[0] = -1.*xyZNA[0];
1386 if(sqrt(xyZNC[0]*xyZNC[0] + xyZNC[1]*xyZNC[1])>1.5)
return;
1391 if(sqrt(xyZNA[0]*xyZNA[0] + xyZNA[1]*xyZNA[1])>1.5)
return;
1403 Double_t psi1C = TMath::ATan2(xyZNC[1],xyZNC[0]);
1405 psi1C += 2.*TMath::Pi();
1407 Double_t psi1A = TMath::ATan2(xyZNA[1],xyZNA[0]);
1409 psi1A += 2.*TMath::Pi();
1423 fHist_znCx_V0_VxVy[runindex][indexVz-1]->Fill(tVertexBin1,EvtCent,TMath::Cos(psi1C));
1424 fHist_znCy_V0_VxVy[runindex][indexVz-1]->Fill(tVertexBin1,EvtCent,TMath::Sin(psi1C));
1425 fHist_znAx_V0_VxVy[runindex][indexVz-1]->Fill(tVertexBin1,EvtCent,TMath::Cos(psi1A));
1426 fHist_znAy_V0_VxVy[runindex][indexVz-1]->Fill(tVertexBin1,EvtCent,TMath::Sin(psi1A));
1456 xyZNC[0] = TMath::Cos(psi1C);
1457 xyZNC[1] = TMath::Sin(psi1C);
1458 xyZNA[0] = TMath::Cos(psi1A);
1459 xyZNA[1] = TMath::Sin(psi1A);
1467 Double_t FillVsWith[5] = {EvtCent, fRefMult, Vxyz[0], Vxyz[1], Vxyz[2]};
1468 Double_t FillValueQx[4] = {xyZNA[0],xyZNC[0],xyZNA[1],xyZNC[1]};
1469 Double_t FillValueXX[4] = {xyZNA[0]*xyZNC[0],xyZNA[1]*xyZNC[1],xyZNC[0]*xyZNA[1],xyZNC[1]*xyZNA[0]};
1471 for(
int i=0;i<4;i++){
1472 for(
int j=0;j<5;j++){
1481 xyZNC[0] = TMath::Cos(psi1C);
1482 xyZNC[1] = TMath::Sin(psi1C);
1483 xyZNA[0] = TMath::Cos(psi1A);
1484 xyZNA[1] = TMath::Sin(psi1A);
1497 Int_t tVertexBin2 = (indexVy-1)*
vxBin + indexVx;
1508 xyZNC[0] = xyZNC[0] - meanCx;
1509 xyZNC[1] = xyZNC[1] - meanCy;
1510 xyZNA[0] = xyZNA[0] - meanAx;
1511 xyZNA[1] = xyZNA[1] - meanAy;
1514 double Psi1C = TMath::ATan2(xyZNC[1],xyZNC[0]);
1516 Psi1C += 2.*TMath::Pi();
1518 double Psi1A = TMath::ATan2(xyZNA[1],xyZNA[0]);
1520 Psi1A += 2.*TMath::Pi();
1523 if(Psi1C==0 && Psi1A==0)
1532 Double_t FillVsWithNew[5] = {EvtCent, fRefMult, Vxyz[0], Vxyz[1], Vxyz[2]};
1533 Double_t FillValueQxNew[4] = {xyZNA[0],xyZNC[0],xyZNA[1],xyZNC[1]};
1534 Double_t FillValueXXNew[4] = {xyZNA[0]*xyZNC[0],xyZNA[1]*xyZNC[1],xyZNC[0]*xyZNA[1],xyZNC[1]*xyZNA[0]};
1536 for(
int i=0;i<4;i++){
1537 for(
int j=0;j<5;j++){
1560 if(EvtCent<5.0) { cIndex = 0; }
1561 else if(EvtCent>=5.0 && EvtCent<10){
1565 cIndex = abs(EvtCent/10.0) + 1;
1573 for(
int i=0; i<iTracks; i++) {
1575 if(!pTrack)
continue;
1576 dPhi = pTrack->
Phi();
1577 dPt = pTrack-> Pt();
1578 dEta = pTrack->
Eta();
1580 if(fabs(dEta) > 0.8)
continue;
1581 if(dPt<0.20 || dPt>10.0)
continue;
1602 Qnx_TPC[0] += dUx*pTwgt;
1603 Qny_TPC[0] += dUy*pTwgt;
1609 fullTerm = dUx*xyZNA[0]*xyZNC[0]-dUx*xyZNA[1]*xyZNC[1]+dUy*xyZNA[0]*xyZNC[1]+dUy*xyZNA[1]*xyZNC[0];
1612 Qnx_TPC[1] += dUx*pTwgt;
1613 Qny_TPC[1] += dUy*pTwgt;
1623 for(
int i=0;i<2;i++){
1624 Qnx_TPC[i] = Qnx_TPC[i]/npoiMult;
1625 Qny_TPC[i] = Qny_TPC[i]/npoiMult;
1629 for(
int i=0;i<2;i++){
1651 Double_t v1FillTerms[4] = {Qnx_TPC[0]*xyZNC[0], Qny_TPC[0]*xyZNC[1], Qnx_TPC[0]*xyZNA[0], Qny_TPC[0]*xyZNA[1]};
1654 for(
int i=0; i<4; i++){
1660 fullTerm = Qnx_TPC[1]*(xyZNA[0]*xyZNC[0] - xyZNA[1]*xyZNC[1]) + Qny_TPC[1]*(xyZNA[0]*xyZNC[1] + xyZNA[1]*xyZNC[0]);
1661 fullReso = xyZNA[0]*xyZNC[0] + xyZNA[1]*xyZNC[1];
1709 AliDebug(2,
"\n ... AliAnalysisTaskZDCGainEq::Terminate() is being called ... \n");
1717 AliDebug(2,
"\n\n ::GetWDist => One of vertices is not valid\n\n");
1720 static TMatrixDSym vVb(3);
1722 double dx = v0->GetX()-v1->GetX();
1723 double dy = v0->GetY()-v1->GetY();
1724 double dz = v0->GetZ()-v1->GetZ();
1725 double cov0[6],cov1[6];
1726 v0->GetCovarianceMatrix(cov0);
1727 v1->GetCovarianceMatrix(cov1);
1728 vVb(0,0) = cov0[0]+cov1[0];
1729 vVb(1,1) = cov0[2]+cov1[2];
1730 vVb(2,2) = cov0[5]+cov1[5];
1731 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
1732 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
1734 if (!vVb.IsValid()) {
1735 AliDebug(2,
"Singular Matrix\n");
1738 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
1739 + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
1740 return dist>0 ? TMath::Sqrt(dist) : -1;
1745 const int kMinPlpContrib = 5;
1746 const double kMaxPlpChi2 = 5.0;
1747 const double kMinWDist = 15;
1749 const AliVVertex* vtPrm = 0;
1750 const AliVVertex* vtPlp = 0;
1754 if(!(nPlp=aod->GetNumberOfPileupVerticesTracks()))
1757 vtPrm = aod->GetPrimaryVertex();
1758 if(vtPrm == aod->GetPrimaryVertexSPD())
1763 for(
int ipl=0;ipl<nPlp;ipl++) {
1764 vtPlp = (
const AliVVertex*)aod->GetPileupVertexTracks(ipl);
1765 if (vtPlp->GetNContributors() < kMinPlpContrib)
continue;
1766 if (vtPlp->GetChi2perNDF() > kMaxPlpChi2)
continue;
1771 double wDst =
GetWDist(vtPrm,vtPlp);
1772 if (wDst<kMinWDist)
continue;
TH1F * fHist_ChanWgt_ZDCA
virtual void UserExec(Option_t *option)
TProfile * fHist_v2xV1_ZDN_Cent_Sep[4]
TH1F * fHist_Psi1_ZDCA_wRectCorr
TProfile * fHist_XX_vs_Obs_woCorr[4][5]
TH1D * fFB_Efficiency_Cent[10]
TH1F * fHist_CutParameters
virtual void Terminate(Option_t *)
TProfile * fHist_v2xV1_ZDN_Norm_All
AliFlowTrackSimple * GetTrack(Int_t i)
AliMultSelection * fMultSelection
input event
TH1F * fHist_Cent_wiZDCcut
double GetWDist(const AliVVertex *v0, const AliVVertex *v1)
TProfile * fHist_v1xV1_ZDN_pTDiff[4][10]
TProfile2D * fHist_znAy_V0_VxVy[90][10]
TH1F * fHist_Cent_woZDCcut
TProfile * fHist_Qx_vs_Obs_woCorr[4][5]
TProfile * fHist_v2xV1_ZDN_pTDiff_All[10]
TH2F * fHist_Recenter_ZDCAx[20]
TProfile * fHist_v2xV1_ZDN_Refm_All
TH2F * fHist_Recenter_ZDCAy[20]
TProfile * fHist_Qx_vs_Obs_wiCorr[4][5]
Bool_t fRejectPileUpTight
TProfile2D * fHist_ZDCA_En_Run[90]
TH1F * fHist_Psi1_ZDCA_wGainCorr
TProfile * fHist_XX_vs_Obs_wiCorr[4][5]
TH1F * fHist_Vy_ArrayFinder
TH1F * fHist_Psi1_ZDCC_wRectCorr
virtual void UserCreateOutputObjects()
TProfile * fHist_ZDN_resol_Refm_All
TH2F * fHist_Recenter_ZDCCx[20]
TProfile2D * fHist_znAx_V0_VxVy[90][10]
TProfile * fHist_ZDN_resol_Norm_Sep[2]
Bool_t plpMV(const AliAODEvent *aod)
Double_t GetCentrality() const
TProfile * fHist_ZDN_resol_Cent_Sep[2]
TProfile * fHist_v2xV1_ZDN_Norm_Sep[4]
TH1F * fHist_Vz_ArrayFinder
TProfile2D * fHist_ZDCC_En_Run[90]
AliFlowEventSimple * fEvent
AliAnalysisUtils * fAnalysisUtil
Int_t GetReferenceMultiplicity() const
TProfile * fHist_ZDN_resol_Cent_All
TH1F * fHist_ChanWgt_ZDCC
TH1F * fHist_Psi1_ZDCC_wGainCorr
TH1F * fPileUpMultSelCount
TH1F * fHist_Vx_ArrayFinder
TList * fListZDCQxy
collection of output
TProfile * fHist_v1xV1_ZDN_EtaDiff[4][10]
Bool_t IsPOItype(Int_t poiType) const
virtual ~AliAnalysisTaskZDCGainEq()
AliAnalysisTaskZDCGainEq()
TProfile2D * fHist_znCy_V0_VxVy[90][10]
ClassImp(AliAnalysisTaskZDCGainEq) AliAnalysisTaskZDCGainEq
TH2F * fHist_Recenter_ZDCCy[20]
TProfile * fHist_ZDN_resol_Norm_All
TProfile2D * fHist_znCx_V0_VxVy[90][10]
TProfile * fHist_v2xV1_ZDN_Cent_All
Int_t NumberOfTracks() const