]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/Correlations/DPhi/AliAnalysisTaskDiHadron.cxx
updated analysis (Jason Ulery)
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTaskDiHadron.cxx
CommitLineData
3b7aa4ba 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15//2- and 3-particle trigger particle correlation analysis
16//Author: Jason Glyndwr Ulery, ulery@uni-frankfurt.de
69088c96 17//version: 3.4, last revised: 2010/08/15
3b7aa4ba 18
19#include "Riostream.h"
d514944f 20#include "TROOT.h"
3b7aa4ba 21#include "TChain.h"
22#include "TTree.h"
23#include "TH1F.h"
24#include "TH2F.h"
25#include "TH3F.h"
26#include "TFormula.h"
27#include "TF1.h"
28#include "TF2.h"
29#include "TF3.h"
30#include "TVector3.h"
31#include "TMath.h"
d514944f 32#include "TRandom3.h"
33#include "TSystem.h"
3b7aa4ba 34
35
36#include "AliAnalysisTask.h"
d514944f 37#include "AliAnalysisTaskSE.h"
3b7aa4ba 38#include "AliAnalysisManager.h"
d514944f 39#include "AliAnalysisTaskSE.h"
3b7aa4ba 40#include "AliESDEvent.h"
41#include "AliESDInputHandler.h"
d514944f 42#include "AliESDtrack.h"
43#include "AliAODEvent.h"
44#include "AliAODHeader.h"
45#include "AliAODInputHandler.h"
46#include "AliAODTrack.h"
3b7aa4ba 47#include "AliMCEvent.h"
48#include "AliMCEventHandler.h"
49#include "AliMCParticle.h"
50#include "AliStack.h"
51#include "AliESDVertex.h"
52#include "AliMultiplicity.h"
d514944f 53#include "AliESDVZERO.h"
3b7aa4ba 54#include "TParticle.h"
d514944f 55#include "AliCentrality.h"
3b7aa4ba 56
57//#include "AliHeader.h"
58//#include "AliGenEventHeader.h"
59
60
61
62#include "AliAnalysisTaskDiHadron.h"
63
64
65ClassImp(AliAnalysisTaskDiHadron)
66
67//----------------------------------------
68AliAnalysisTaskDiHadron::AliAnalysisTaskDiHadron(const char *name):
d514944f 69AliAnalysisTaskSE(name), fESD(0), fAOD(0), fMC(0), fOutput(0),fMinClustersTPC(0),fMinClusterRatio(0),fMaxTPCchi2(0),fMinClustersITS(0),fEtaCut(0),fTrigEtaCut(0),fNearPhiCut(0),fXECut(0),fMaxDCA(0),fMaxDCAXY(0),fMaxDCAZ(0),fDCA2D(0),fTPCRefit(0),fITSRefit(0),fSPDCut(0),fMinPtAssoc(0),fMaxPtAssoc(0),fVzCut(0),fAODData(0),fEfficiencyCorr(0),fDEBUG(0),fnBinPhi(0),fnBinEta(0),fnBinPhiEtaPhi(0),fnBinPhiEtaEta(0),fnBinPhi3(0),fnBinEta3(0),fPi(3.1415926535898),fdPhiMin(0),fdPhiMax(0),fNTPtBins(0),fNMix(0),fNCentBins(0),fCentPercent(0),fNAPtBins(0),fNAPt3Bins(0),fNVertexBins(0),fNXEBins(0),fNIDs(0),fEffFitPt(0),fNFitLowParam(0),fNFitHighParam(0),fV2FitPt(0),fV3FitPt(0),fV4FitPt(0),fNFitLowParamV2(0),fNFitHighParamV2(0),fNFitLowParamV3(0),fNFitHighParamV3(0),fNFitLowParamV4(0),fNFitHighParamV4(0),fMCHistos(0),fFitLow(NULL),fFitHigh(NULL),fFitLowParam(NULL),fFitHighParam(NULL),fFitLowV2(NULL),fFitHighV2(NULL),fFitLowParamV2(NULL),fFitHighParamV2(NULL),fFitLowV3(NULL),fFitHighV3(NULL),fFitLowParamV3(NULL),fFitHighParamV3(NULL),fFitLowV4(NULL),fFitHighV4(NULL),fFitLowParamV4(NULL),fFitHighParamV4(NULL),fPtTrigArray(NULL),fPtAssocArray(NULL),fPtAssoc3Array1(NULL),fPtAssoc3Array2(NULL),fCentArrayMin(NULL),fCentArrayMax(NULL),fXEArray(NULL),fTrigIDArray(NULL),fSimulate(0),fSimNBgPart(0),fSimNJetPart(0),fSimNJet(0),fSimNEvents(0),ftPhi(NULL),ftEta(NULL),ftPt(NULL),ftCharge(NULL),ftEff(NULL),ftV2(NULL),ftV3(NULL),ftV4(NULL),ftPtAssoc3(NULL),ftNPtAssoc3(NULL)
3b7aa4ba 70
71 {
d514944f 72 //TRandom *gRandom=new TRandom3();
73
3b7aa4ba 74 //IO Slots
75 DefineInput(0, TChain::Class());
76 DefineOutput(0,TList::Class());
77
78
79 for(int c=0;c<fNCentBins;c++){
80 for(int v=0;v<fNVertexBins;v++){
81 for(int jmc=0;jmc<2;jmc++){
d514944f 82 fMixPointer[c][v][jmc]=0;
83 fMixEnd[c][v][jmc]=0;
3b7aa4ba 84 for(int ievts=0;ievts<fNMix;ievts++){
85 fMPt[ievts][c][v][jmc]=NULL;
86 fMPhi[ievts][c][v][jmc]=NULL;
87 fMEta[ievts][c][v][jmc]=NULL;
d514944f 88 fMCharge[ievts][c][v][jmc]=NULL;
89 fMEff[ievts][c][v][jmc]=NULL;
90 fMV2[ievts][c][v][jmc]=NULL;
91 fMV4[ievts][c][v][jmc]=NULL;
3b7aa4ba 92 for(int dd=0;dd<10;dd++)fMPtAssoc3[ievts][c][v][jmc][dd]=NULL;
93 fMNPtAssoc3[ievts][c][v][jmc]=NULL;
94 fMixTrack[ievts][c][v][jmc]=0;
95 }
96 }
97 }
98 }
0f3a7491 99
3b7aa4ba 100 }
101//--------------------------------------
69088c96 102void AliAnalysisTaskDiHadron::SetCuts(Int_t MinClustersTPC, Float_t MinClusterRatio, Float_t MaxTPCchi2, Int_t MinClustersITS, Float_t EtaCut, Float_t TrigEtaCut, Float_t NearPhiCut, Float_t XECut, Float_t MaxDCA, Float_t MaxDCAXY, Float_t MaxDCAZ, Int_t DCA2D, Int_t TPCRefit, Int_t ITSRefit, Int_t SPDCut, Float_t MinPtAssoc, Float_t MaxPtAssoc, Float_t VzCut, Int_t NIDs, const char * TrigIDArray){
103//Sets the varibles for track and event cuts
d514944f 104 if(fDEBUG)Printf("Setting Cuts");
3b7aa4ba 105 fMinClustersTPC=MinClustersTPC;
106 fMinClusterRatio=MinClusterRatio;
107 fMaxTPCchi2=MaxTPCchi2;
108 fMinClustersITS=MinClustersITS;
109 fEtaCut=EtaCut;
110 fTrigEtaCut=TrigEtaCut;
111 fNearPhiCut=NearPhiCut;
112 fXECut=XECut;
113 fMaxDCA=MaxDCA;
114 fMaxDCAXY=MaxDCAXY;
115 fMaxDCAZ=MaxDCAZ;
116 fDCA2D=DCA2D;
117 fTPCRefit=TPCRefit;
118 fITSRefit=ITSRefit;
119 fSPDCut=SPDCut;
120 fMinPtAssoc=MinPtAssoc;
121 fMaxPtAssoc=MaxPtAssoc;
122 fVzCut=VzCut;
123 fNIDs=NIDs;
0f3a7491 124 fTrigIDArray=(char*)TrigIDArray;
3b7aa4ba 125}
126//--------------------------------------------------------
d514944f 127void AliAnalysisTaskDiHadron::SetOptions(Int_t AODData, Int_t EfficiencyCorr, Int_t ffDEBUG, Int_t MCHistos){
69088c96 128//Sets some options
d514944f 129 if(fDEBUG) Printf("Setting Options");
130 fAODData=AODData;
3b7aa4ba 131 fEfficiencyCorr=EfficiencyCorr;
69088c96 132 fDEBUG=ffDEBUG;
3b7aa4ba 133 fMCHistos=MCHistos;
3b7aa4ba 134}
135//------------------------------------------------------
d514944f 136void AliAnalysisTaskDiHadron::SetBins(Int_t nBinPhi, Int_t nBinEta, Int_t nBinPhiEtaPhi, Int_t nBinPhiEtaEta, Int_t nBinPhi3, Int_t nBinEta3,Float_t dPhiMin, Float_t dPhiMax, Int_t NTPtBins, Int_t NMixBins, Int_t NCentBins, Int_t CentPercent, Int_t NAPtBins, Int_t NAPt3Bins, Int_t NVertexBins, Int_t NXEBins,Float_t *PtTrigArray, Float_t *PtAssocArray,Float_t *PtAssoc3Array1, Float_t *PtAssoc3Array2, Int_t *CentArrayMin, Int_t *CentArrayMax, Float_t *XEArray){
69088c96 137//sets up the histogram binning
d514944f 138 if(fDEBUG)Printf("Setting Binning");
3b7aa4ba 139 fnBinPhi=nBinPhi;
140 fnBinEta=nBinEta;
141 fnBinPhiEtaPhi=nBinPhiEtaPhi;
142 fnBinPhiEtaEta=nBinPhiEtaEta;
143 fnBinPhi3=nBinPhi3;
144 fnBinEta3=nBinEta3;
145 fdPhiMin=dPhiMin;
146 fdPhiMax=dPhiMax;
147 fNTPtBins=NTPtBins;
148 fNMix=NMixBins;
149 fNCentBins=NCentBins;
d514944f 150 fCentPercent=CentPercent;
3b7aa4ba 151 fNAPtBins=NAPtBins;
152 fNAPt3Bins=NAPt3Bins;
153 fNVertexBins=NVertexBins;
154 fNXEBins=NXEBins;
0f3a7491 155 fPtTrigArray=new Float_t [fNTPtBins];
156 for(int i=0;i<fNTPtBins;i++)fPtTrigArray[i]=PtTrigArray[i];
157 fPtAssocArray=new Float_t [fNAPtBins];
d514944f 158 for(int i=0;i<=fNAPtBins;i++)fPtAssocArray[i]=PtAssocArray[i];
0f3a7491 159 fPtAssoc3Array1=new Float_t [fNAPt3Bins];
160 for(int i=0;i<fNAPt3Bins;i++)fPtAssoc3Array1[i]=PtAssoc3Array1[i];
161 fPtAssoc3Array2=new Float_t [fNAPt3Bins];
162 for(int i=0;i<fNAPt3Bins;i++)fPtAssoc3Array2[i]=PtAssoc3Array2[i];
163 fCentArrayMin=new Int_t [fNCentBins];
164 for(int i=0;i<NCentBins;i++)fCentArrayMin[i]=CentArrayMin[i];
165 fCentArrayMax=new Int_t [fNCentBins];
166 for(int i=0;i<NCentBins;i++)fCentArrayMax[i]=CentArrayMax[i];
167 fXEArray=new Float_t [fNXEBins];
168 for(int i=0;i<fNXEBins;i++)fXEArray[i]=XEArray[i];
3b7aa4ba 169 for(int i=0;i<=fNVertexBins;i++)fVertexArray[i]=(2.*i/fNVertexBins-1)*fVzCut;
3b7aa4ba 170}
171//-------------------------------------------------------
69088c96 172void AliAnalysisTaskDiHadron::SetEfficiencies(Float_t EffFitPt, const TF1 *FitLow, const TF1 *FitHigh, Int_t NFitLowParam, Int_t NFitHighParam, Float_t *FitLowParam, Float_t *FitHighParam){
173//Sets up the efficiency corrections
d514944f 174 if(fDEBUG)Printf("Setting Efficiencies");
3b7aa4ba 175 fEffFitPt=EffFitPt;
176 fFitLow=(TF1*)FitLow;
177 fFitHigh=(TF1*)FitHigh;
178 fNFitLowParam=NFitLowParam;
179 fNFitHighParam=NFitHighParam;
0f3a7491 180 fFitLowParam=new Float_t [fNFitLowParam*fNCentBins];
181 for(int i=0;i<fNFitLowParam*fNCentBins;i++)fFitLowParam[i]=FitLowParam[i];
182 fFitHighParam=new Float_t [fNFitHighParam*fNCentBins];
183 for(int i=0;i<fNFitHighParam*fNCentBins;i++)fFitHighParam[i]=FitHighParam[i];
3b7aa4ba 184}
d514944f 185//-----------------------------------------------------------
186void AliAnalysisTaskDiHadron::SetFlow(Float_t V2FitPt, Float_t V3FitPt, Float_t V4FitPt, const TF1 *FitLowV2, const TF1 *FitHighV2, const TF1 *FitLowV3, const TF1 *FitHighV3, const TF1 *FitLowV4, const TF1 *FitHighV4, Int_t NFitLowParamV2, Int_t NFitHighParamV2, Int_t NFitLowParamV3, Int_t NFitHighParamV3, Int_t NFitLowParamV4, Int_t NFitHighParamV4, Float_t *FitLowParamV2, Float_t *FitHighParamV2, Float_t *FitLowParamV3, Float_t *FitHighParamV3, Float_t *FitLowParamV4, Float_t *FitHighParamV4){
187 if(fDEBUG)Printf("Setting Flow");
188 fV2FitPt=V2FitPt;
189 fV3FitPt=V3FitPt;
190 fV4FitPt=V4FitPt;
191 fFitLowV2=(TF1*)FitLowV2;
192 fFitHighV2=(TF1*)FitHighV2;
193 fFitLowV3=(TF1*)FitLowV3;
194 fFitHighV3=(TF1*)FitHighV3;
195 fFitLowV4=(TF1*)FitLowV4;
196 fFitHighV4=(TF1*)FitHighV4;
197 fNFitLowParamV2=NFitLowParamV2;
198 fNFitHighParamV2=NFitHighParamV2;
199 fNFitLowParamV3=NFitLowParamV3;
200 fNFitHighParamV3=NFitHighParamV3;
201 fNFitLowParamV4=NFitLowParamV4;
202 fNFitHighParamV4=NFitHighParamV4;
203
204 fFitLowParamV2=new Float_t [fNFitLowParamV2*fNCentBins];
205 for(int i=0;i<fNFitLowParamV2*fNCentBins;i++)fFitLowParamV2[i]=FitLowParamV2[i];
206 fFitHighParamV2=new Float_t [fNFitHighParamV2*fNCentBins];
207 for(int i=0;i<fNFitHighParamV2*fNCentBins;i++)fFitHighParamV2[i]=FitHighParamV2[i];
208
209 fFitLowParamV3=new Float_t [fNFitLowParamV3*fNCentBins];
210 for(int i=0;i<fNFitLowParamV3*fNCentBins;i++)fFitLowParamV3[i]=FitLowParamV3[i];
211 fFitHighParamV3=new Float_t [fNFitHighParamV3*fNCentBins];
212 for(int i=0;i<fNFitHighParamV3*fNCentBins;i++)fFitHighParamV3[i]=FitHighParamV3[i];
213
214 fFitLowParamV4=new Float_t [fNFitLowParamV4*fNCentBins];
215 for(int i=0;i<fNFitLowParamV4*fNCentBins;i++)fFitLowParamV4[i]=FitLowParamV4[i];
216 fFitHighParamV4=new Float_t [fNFitHighParamV4*fNCentBins];
217 for(int i=0;i<fNFitHighParamV4*fNCentBins;i++)fFitHighParamV4[i]=FitHighParamV4[i];
218 if(fDEBUG)Printf("FlowSet");
219 }
220//----------------------------------------------------------
221void AliAnalysisTaskDiHadron::SetSimulation(Int_t Simulate, Float_t SimNBgPart, Float_t SimNJetPart, Float_t SimNJet, Int_t SimNEvents){
222 fSimulate=Simulate;
223 fSimNBgPart=SimNBgPart;
224 fSimNJetPart=SimNJetPart;
225 fSimNJet=SimNJet;
226 fSimNEvents=SimNEvents;
3b7aa4ba 227
d514944f 228}
229
3b7aa4ba 230//-----------------------------------------------------------
231void AliAnalysisTaskDiHadron::ConnectInputData(Option_t *){
232 //Connect to ESD
69088c96 233 if(fDEBUG)Printf("Connecting");
3b7aa4ba 234 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
69088c96 235 if (!tree&&fDEBUG) {Printf("ERROR: Could not read chain from input slot 0");}
3b7aa4ba 236 else {
d514944f 237 if(!fAODData){
238AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
239 if (!esdH){if(fDEBUG) Printf("ERROR: Could not get ESDInputHandler");}
240 else fESD = esdH->GetEvent();
00596b83 241 }
d514944f 242 else{
243 AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
244 if (!aodH) {
245 Printf("ERROR: Could not get AODInputHandler");
246 }
247 else{
248 fAOD = aodH->GetEvent();
249 }
00596b83 250 }
3b7aa4ba 251 //MC Data handler (so one can calcualte eff)
252 AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler());
253 if(mcH)fMC=mcH->MCEvent();
254 }
d514944f 255 if(fDEBUG)Printf("Connected");
3b7aa4ba 256}
257
258//---------------------------------------------------------
259void AliAnalysisTaskDiHadron::CreateOutputObjects(){
3b7aa4ba 260 //Creates the histograms and list
69088c96 261 if(fDEBUG)Printf("Output");
3b7aa4ba 262 fOutput=new TList();
263 fOutput->SetName(GetName());
d514944f 264 char histname[300];
265 char histtitle[300];
3b7aa4ba 266 int nptbins=fNAPtBins;
267 int lptbins=0;
a4e1e779 268 const char *cmc1[2]={"","_MC"};
269 const char *cmc2[2]={""," MC"};
270 const char *sign1[3]={"","_LS","_ULS"};
271 const char *sign2[3]={""," Like-Sign"," Unlike-Sign"};
272 const char *sign31[4]={"","_LS","_ULT","_ULA"};
273 const char *sign32[4]={""," Like-Sign"," Trigger-Diff"," Assoc-Diff"};
69088c96 274 Float_t etaEdge=fEtaCut+fTrigEtaCut;
275 Float_t phiArray[fnBinPhi+1];
276 Float_t etaArray[fnBinEta+1];
277 Float_t phiEtaArrayPhi[fnBinPhiEtaPhi+1];
278 Float_t phiEtaArrayEta[fnBinPhiEtaEta+1];
d514944f 279 Int_t BufferSize=256;
3b7aa4ba 280 for(int iphi=0;iphi<=fnBinPhi;iphi++){
69088c96 281 phiArray[iphi]=fdPhiMin+iphi*2*fPi/fnBinPhi;
3b7aa4ba 282 }
283 for(int ieta=0;ieta<=fnBinEta;ieta++){
69088c96 284 etaArray[ieta]=-etaEdge+ieta*2*etaEdge/fnBinEta;
3b7aa4ba 285 }
286 for(int iphi=0;iphi<=fnBinPhiEtaPhi;iphi++){
69088c96 287 phiEtaArrayPhi[iphi]=fdPhiMin+iphi*2*fPi/fnBinPhiEtaPhi;
3b7aa4ba 288 }
289 for(int ieta=0;ieta<=fnBinPhiEtaEta;ieta++){
69088c96 290 phiEtaArrayEta[ieta]=-etaEdge+ieta*2*etaEdge/fnBinPhiEtaEta;
3b7aa4ba 291 }
292 for(int imc=0;imc<=1;imc++){//MC loop
293 if(imc==1&&!fMCHistos) continue;
294 //Create the histograms
d514944f 295 snprintf(histname,BufferSize,"fHistMult%s",cmc1[imc]);
296 snprintf(histtitle,BufferSize,"Multiplicity%s",cmc2[imc]);
3b7aa4ba 297 fHistMult[imc]=new TH1F(histname,histtitle,2000,-0.5,1999.5);
298 fHistMult[imc]->Sumw2();
299 fHistMult[imc]->GetXaxis()->SetTitle("Number of tracks");
300 fHistMult[imc]->GetYaxis()->SetTitle("Counts");
301 fOutput->Add(fHistMult[imc]);
302
303 for(int imult=0;imult<fNCentBins;imult++){//loop for multiplicity bins
304
305 //Histograms that are independent of the trigger
d514944f 306 snprintf(histname,BufferSize,"fHistPt_C%d%s",imult,cmc1[imc]);
307 snprintf(histtitle,BufferSize,"P_{T} Distribution of Tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 308 fHistPt[imult][imc]=new TH1F(histname,histtitle,nptbins,fPtAssocArray);
309 fHistPt[imult][imc]->Sumw2();
310 fHistPt[imult][imc]->GetXaxis()->SetTitle("p_{T}");
311 fHistPt[imult][imc]->GetYaxis()->SetTitle("Counts");
312 fOutput->Add(fHistPt[imult][imc]);
313
d514944f 314 //Histograms that are independent of the trigger
315 snprintf(histname,BufferSize,"fHistPtEff_C%d%s",imult,cmc1[imc]);
316 snprintf(histtitle,BufferSize,"P_{T} Distribution of Tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 317 fHistPtEff[imult][imc]=new TH1F(histname,histtitle,1000,0,100);
318 fHistPtEff[imult][imc]->Sumw2();
319 fHistPtEff[imult][imc]->GetXaxis()->SetTitle("p_{T}");
320 fHistPtEff[imult][imc]->GetYaxis()->SetTitle("Counts");
321 fOutput->Add(fHistPtEff[imult][imc]);
322
d514944f 323 snprintf(histname,BufferSize,"fHistPhi_C%d%s",imult,cmc1[imc]);
324 snprintf(histtitle,BufferSize,"#phi Distribution of Tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 325 fHistPhi[imult][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,nptbins,fPtAssocArray);
3b7aa4ba 326 fHistPhi[imult][imc]->Sumw2();
327 fHistPhi[imult][imc]->GetXaxis()->SetTitle("#phi");
328 fHistPhi[imult][imc]->GetYaxis()->SetTitle("P_{T}");
329 fOutput->Add(fHistPhi[imult][imc]);
330
d514944f 331 snprintf(histname,BufferSize,"fHistPhiPt_C%d%s",imult,cmc1[imc]);
332 snprintf(histtitle,BufferSize,"P_{T} weighted #phi Distribution of tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 333 fHistPhiPt[imult][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,nptbins,fPtAssocArray);
3b7aa4ba 334 fHistPhiPt[imult][imc]->Sumw2();
335 fHistPhiPt[imult][imc]->GetXaxis()->SetTitle("#phi");
336 fHistPhiPt[imult][imc]->GetYaxis()->SetTitle("P_{T}");
337 fOutput->Add(fHistPhiPt[imult][imc]);
338
d514944f 339 snprintf(histname,BufferSize,"fHistEta_C%d%s",imult,cmc1[imc]);
340 snprintf(histtitle,BufferSize,"#eta Distribution of Tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 341 fHistEta[imult][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,nptbins,fPtAssocArray);
3b7aa4ba 342 fHistEta[imult][imc]->Sumw2();
343 fHistEta[imult][imc]->GetXaxis()->SetTitle("#eta");
344 fHistEta[imult][imc]->GetYaxis()->SetTitle("P_{T}");
345 fOutput->Add(fHistEta[imult][imc]);
346
d514944f 347 snprintf(histname,BufferSize,"fHistEtaPt_C%d%s",imult,cmc1[imc]);
348 snprintf(histtitle,BufferSize,"P_{T} weighted #eta Distribution of tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 349 fHistEtaPt[imult][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,nptbins,fPtAssocArray);
3b7aa4ba 350 fHistEtaPt[imult][imc]->Sumw2();
351 fHistEtaPt[imult][imc]->GetXaxis()->SetTitle("#eta");
352 fHistEtaPt[imult][imc]->GetYaxis()->SetTitle("P_{T}");
353 fOutput->Add(fHistEtaPt[imult][imc]);
354
d514944f 355 snprintf(histname,BufferSize,"fHistNEvents_C%d%s",imult,cmc1[imc]);
356 snprintf(histtitle,BufferSize,"Number of Events and Number Passing Cuts %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 357 fHistNEvents[imult][imc]=new TH1F(histname,histtitle,2,-0.5,1.5);
358 fHistNEvents[imult][imc]->Sumw2();
359 fHistNEvents[imult][imc]->GetXaxis()->SetTitle("Events,Passing Cuts");
360 fHistNEvents[imult][imc]->GetYaxis()->SetTitle("Number of Events");
361 fOutput->Add(fHistNEvents[imult][imc]);
362
d514944f 363 snprintf(histname,BufferSize,"fHistNTrigger_C%d%s",imult,cmc1[imc]);
364 snprintf(histtitle,BufferSize,"Number of Triggers %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 365 fHistNTrigger[imult][imc]=new TH1F(histname,histtitle,fNTPtBins,-0.5,fNTPtBins-0.5);
366 fHistNTrigger[imult][imc]->Sumw2();
367 fHistNTrigger[imult][imc]->GetXaxis()->SetTitle("Trigger Number");
368 fHistNTrigger[imult][imc]->GetYaxis()->SetTitle("Number of Triggers");
369 fOutput->Add(fHistNTrigger[imult][imc]);
370
d514944f 371 snprintf(histname,BufferSize,"fHistNTriggerPt_C%d%s",imult,cmc1[imc]);
372 snprintf(histtitle,BufferSize,"P_{T} Weighted Number of Triggers %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 373 fHistNTriggerPt[imult][imc]=new TH1F(histname,histtitle,fNTPtBins,-0.5,fNTPtBins-0.5);
374 fHistNTriggerPt[imult][imc]->Sumw2();
375 fHistNTriggerPt[imult][imc]->GetXaxis()->SetTitle("Trigger Number");
376 fHistNTriggerPt[imult][imc]->GetYaxis()->SetTitle("Number of Triggers");
377 fOutput->Add(fHistNTriggerPt[imult][imc]);
378
d514944f 379 snprintf(histname,BufferSize,"fHistNMix_C%d%s",imult,cmc1[imc]);
380 snprintf(histtitle,BufferSize,"Number of Mixed Events %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 381 fHistNMix[imult][imc]=new TH1F(histname,histtitle,fNTPtBins,-0.5,fNTPtBins-0.5);
382 fHistNMix[imult][imc]->Sumw2();
383 fHistNMix[imult][imc]->GetXaxis()->SetTitle("Trigger Number");
384 fHistNMix[imult][imc]->GetYaxis()->SetTitle("Number of Mixed Events");
385 fOutput->Add(fHistNMix[imult][imc]);
386
d514944f 387 snprintf(histname,BufferSize,"fHistPhiEta_C%d%s",imult,cmc1[imc]);
388 snprintf(histtitle,BufferSize,"#phi-#eta distribution of tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 389 fHistPhiEta[imult][imc]=new TH3F(histname, histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,nptbins,fPtAssocArray);
3b7aa4ba 390 fHistPhiEta[imult][imc]->Sumw2();
391 fHistPhiEta[imult][imc]->GetXaxis()->SetTitle("#phi");
392 fHistPhiEta[imult][imc]->GetYaxis()->SetTitle("#eta");
393 fHistPhiEta[imult][imc]->GetZaxis()->SetTitle("p_{T}");
394 fOutput->Add(fHistPhiEta[imult][imc]);
395
d514944f 396 snprintf(histname,BufferSize,"fHistPhiEtaPt_C%d%s",imult,cmc1[imc]);
397 snprintf(histtitle,BufferSize,"Pt Weighted #phi-#eta distribution of tracks %dMult%d%s",fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 398 fHistPhiEtaPt[imult][imc]=new TH3F(histname, histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,nptbins,fPtAssocArray);
3b7aa4ba 399 fHistPhiEtaPt[imult][imc]->Sumw2();
400 fHistPhiEtaPt[imult][imc]->GetXaxis()->SetTitle("#phi");
401 fHistPhiEtaPt[imult][imc]->GetYaxis()->SetTitle("#eta");
402 fHistPhiEtaPt[imult][imc]->GetZaxis()->SetTitle("p_{T}");
403 fOutput->Add(fHistPhiEtaPt[imult][imc]);
404
69088c96 405 //if(fDEBUG)Printf("OutPut2");
3b7aa4ba 406 //Histograms with a trigger dependence
407
408 for(int i=0;i<fNTPtBins;i++){
409 for(int j=1;j<fNAPtBins;j++){
69088c96 410 if(fabs(fPtTrigArray[i]-fPtAssocArray[j])<1E-5)lptbins=j;
3b7aa4ba 411 }
69088c96 412 //if(fDEBUG)Printf("Loop: %d Pt %3.2f",i,fPtTrigArray[i]/fPtBinWidth);
3b7aa4ba 413
414 //Ones with no centrality binning
415 if(imult==0){
d514944f 416 snprintf(histname,BufferSize,"fHistMultTrig_P%d%s",i,cmc1[imc]);
417 snprintf(histtitle,BufferSize,"Distrubition of number of tracks in triggered events with %3.1f<p_{T}^{Trig}<%3.1f%s",fPtTrigArray[i],fPtTrigArray[i+1],cmc2[imc]);
3b7aa4ba 418 fHistMultTrig[i][imc]=new TH1F(histname,histtitle,2000,0,2000);
419 fHistMultTrig[i][imc]->Sumw2();
420 fHistMultTrig[i][imc]->GetXaxis()->SetTitle("Number of Tracks");
421 fHistMultTrig[i][imc]->GetYaxis()->SetTitle("Counts");
422 fOutput->Add(fHistMultTrig[i][imc]);
423 }
d514944f 424 snprintf(histname,BufferSize,"fHistPtTrig_P%d_C%d%s",i,imult,cmc1[imc]);
425 snprintf(histtitle,BufferSize,"P_{T} distribution in triggered events with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 426 fHistPtTrig[i][imult][imc]=new TH1F(histname,histtitle,nptbins,fPtAssocArray);
427 fHistPtTrig[i][imult][imc]->Sumw2();
428 fHistPtTrig[i][imult][imc]->GetXaxis()->SetTitle("p_{T}");
429 fHistPtTrig[i][imult][imc]->GetYaxis()->SetTitle("Counts");
430 fOutput->Add(fHistPtTrig[i][imult][imc]);
431
d514944f 432 snprintf(histname,BufferSize,"fHistPhiTrig_P%d_C%d%s",i,imult,cmc1[imc]);
433 snprintf(histtitle,BufferSize,"Phi Distribution of triggered events with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 434 fHistPhiTrig[i][imult][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
3b7aa4ba 435 fHistPhiTrig[i][imult][imc]->Sumw2();
436 fHistPhiTrig[i][imult][imc]->GetXaxis()->SetTitle("#phi");
437 fHistPhiTrig[i][imult][imc]->GetYaxis()->SetTitle("p_{T}");
438 fOutput->Add(fHistPhiTrig[i][imult][imc]);
439
d514944f 440 snprintf(histname,BufferSize,"fHistPhiTrigPt_P%d_C%d%s",i,imult,cmc1[imc]);
441 snprintf(histtitle,BufferSize,"P_{T} Weighted Phi Distribution of triggered events with %3.1f<p_{T}^{Trig}<%3.1f%s",fPtTrigArray[i],fPtTrigArray[i+1],cmc2[imc]);
69088c96 442 fHistPhiTrigPt[i][imult][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
3b7aa4ba 443 fHistPhiTrigPt[i][imult][imc]->Sumw2();
444 fHistPhiTrigPt[i][imult][imc]->GetXaxis()->SetTitle("#phi");
445 fHistPhiTrigPt[i][imult][imc]->GetYaxis()->SetTitle("p_{T}");
446 fOutput->Add(fHistPhiTrigPt[i][imult][imc]);
447
d514944f 448 snprintf(histname,BufferSize,"fHistEtaTrig_P%d_C%d%s",i,imult,cmc1[imc]);
449 snprintf(histtitle,BufferSize,"Eta Distribution of triggered events with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 450 fHistEtaTrig[i][imult][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 451 fHistEtaTrig[i][imult][imc]->Sumw2();
452 fHistEtaTrig[i][imult][imc]->GetXaxis()->SetTitle("#eta");
453 fHistEtaTrig[i][imult][imc]->GetYaxis()->SetTitle("p_{T}");
454 fOutput->Add(fHistEtaTrig[i][imult][imc]);
455
d514944f 456 snprintf(histname,BufferSize,"fHistEtaTrigPt_P%d_C%d%s",i,imult,cmc1[imc]);
457 snprintf(histtitle,BufferSize,"P_{T} Weighted Eta Distribution of triggered events with %3.1f<p_{T}^{Trig}<%3.1f%s",fPtTrigArray[i],fPtTrigArray[i+1],cmc2[imc]);
69088c96 458 fHistEtaTrigPt[i][imult][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 459 fHistEtaTrigPt[i][imult][imc]->Sumw2();
460 fHistEtaTrigPt[i][imult][imc]->GetXaxis()->SetTitle("#eta");
461 fHistEtaTrigPt[i][imult][imc]->GetYaxis()->SetTitle("p_{T}");
462 fOutput->Add(fHistEtaTrigPt[i][imult][imc]);
463
d514944f 464 snprintf(histname,BufferSize,"fHistPhiEtaTrig_P%d_C%d%s",i,imult,cmc1[imc]);
465 snprintf(histtitle,BufferSize,"#phi-#eta distribution in triggered events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 466 fHistPhiEtaTrig[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
3b7aa4ba 467 fHistPhiEtaTrig[i][imult][imc]->Sumw2();
468 fHistPhiEtaTrig[i][imult][imc]->GetXaxis()->SetTitle("#phi");
469 fHistPhiEtaTrig[i][imult][imc]->GetYaxis()->SetTitle("#eta");
470 fHistPhiEtaTrig[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
471 fOutput->Add(fHistPhiEtaTrig[i][imult][imc]);
472
d514944f 473 snprintf(histname,BufferSize,"fHistXEN_P%d_C%d%s",i,imult,cmc1[imc]);
474 snprintf(histtitle,BufferSize,"Near-Side X_{E} distribution for %3.1f<p_{T}^{Lead}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 475 fHistXEN[i][imult][imc]=new TH1F(histname,histtitle,fNXEBins,fXEArray);
476 fHistXEN[i][imult][imc]->Sumw2();
477 fHistXEN[i][imult][imc]->GetXaxis()->SetTitle("X_{E}");
478 fOutput->Add(fHistXEN[i][imult][imc]);
479
d514944f 480 snprintf(histname,BufferSize,"fHistXENMixed_P%d_C%d%s",i,imult,cmc1[imc]);
481 snprintf(histtitle,BufferSize,"Mixed Near-Side X_{E} distribution for %3.1f<p_{T}^{Lead}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 482 fHistXENMix[i][imult][imc]=new TH1F(histname,histtitle,fNXEBins,fXEArray);
483 fHistXENMix[i][imult][imc]->Sumw2();
484 fHistXENMix[i][imult][imc]->GetXaxis()->SetTitle("X_{E}");
485 fOutput->Add(fHistXENMix[i][imult][imc]);
486
d514944f 487 snprintf(histname,BufferSize,"fHistXEA_P%d_C%d%s",i,imult,cmc1[imc]);
488 snprintf(histtitle,BufferSize,"Away-Side X_{E} distribution for %3.1f<p_{T}^{Lead}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 489 fHistXEA[i][imult][imc]=new TH1F(histname,histtitle,fNXEBins,fXEArray);
490 fHistXEA[i][imult][imc]->Sumw2();
491 fHistXEA[i][imult][imc]->GetXaxis()->SetTitle("X_{E}");
492 fOutput->Add(fHistXEA[i][imult][imc]);
493
d514944f 494 snprintf(histname,BufferSize,"fHistXEAMixed_P%d_C%d%s",i,imult,cmc1[imc]);
495 snprintf(histtitle,BufferSize,"Mixed Away-Side X_{E} distribution for %3.1f<p_{T}^{Lead}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
3b7aa4ba 496 fHistXEAMix[i][imult][imc]=new TH1F(histname,histtitle,fNXEBins,fXEArray);
497 fHistXEAMix[i][imult][imc]->Sumw2();
498 fHistXEAMix[i][imult][imc]->GetXaxis()->SetTitle("X_{E}");
499 fOutput->Add(fHistXEAMix[i][imult][imc]);
500
501 //signloop
502 for(int isign=0;isign<3;isign++){
d514944f 503 snprintf(histname,BufferSize,"fHistDeltaPhi_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
504 snprintf(histtitle,BufferSize,"#Delta#phi Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 505 fHistDeltaPhi[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
3b7aa4ba 506 fHistDeltaPhi[i][imult][isign][imc]->Sumw2();
507 fHistDeltaPhi[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
508 fHistDeltaPhi[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
509 fOutput->Add(fHistDeltaPhi[i][imult][isign][imc]);
510
d514944f 511 snprintf(histname,BufferSize,"fHistDeltaPhiPt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
512 snprintf(histtitle,BufferSize,"P_{T} Weighted #Delta#phi Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 513 fHistDeltaPhiPt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
3b7aa4ba 514 fHistDeltaPhiPt[i][imult][isign][imc]->Sumw2();
515 fHistDeltaPhiPt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
516 fHistDeltaPhiPt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
517 fOutput->Add(fHistDeltaPhiPt[i][imult][isign][imc]);
518
d514944f 519 snprintf(histname,BufferSize,"fHistDeltaPhiMix_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
520 snprintf(histtitle,BufferSize,"#Delta#phi Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 521 fHistDeltaPhiMix[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
3b7aa4ba 522 fHistDeltaPhiMix[i][imult][isign][imc]->Sumw2();
523 fHistDeltaPhiMix[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
524 fHistDeltaPhiMix[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
525 fOutput->Add(fHistDeltaPhiMix[i][imult][isign][imc]);
d514944f 526
527 snprintf(histname,BufferSize,"fHistDeltaPhiMixV2_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
528 snprintf(histtitle,BufferSize,"#Delta#phi Mixed Event V2 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
529 fHistDeltaPhiMixV2[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
530 fHistDeltaPhiMixV2[i][imult][isign][imc]->Sumw2();
531 fHistDeltaPhiMixV2[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
532 fHistDeltaPhiMixV2[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
533 fOutput->Add(fHistDeltaPhiMixV2[i][imult][isign][imc]);
534
535 snprintf(histname,BufferSize,"fHistDeltaPhiMixV3_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
536 snprintf(histtitle,BufferSize,"#Delta#phi Mixed Event V3 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
537 fHistDeltaPhiMixV3[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
538 fHistDeltaPhiMixV3[i][imult][isign][imc]->Sumw2();
539 fHistDeltaPhiMixV3[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
540 fHistDeltaPhiMixV3[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
541 fOutput->Add(fHistDeltaPhiMixV3[i][imult][isign][imc]);
542
543 snprintf(histname,BufferSize,"fHistDeltaPhiMixV4_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
544 snprintf(histtitle,BufferSize,"#Delta#phi Mixed Event V4 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
545 fHistDeltaPhiMixV4[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
546 fHistDeltaPhiMixV4[i][imult][isign][imc]->Sumw2();
547 fHistDeltaPhiMixV4[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
548 fHistDeltaPhiMixV4[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
549 fOutput->Add(fHistDeltaPhiMixV4[i][imult][isign][imc]);
3b7aa4ba 550
d514944f 551 snprintf(histname,BufferSize,"fHistDeltaPhiMixPt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
552 snprintf(histtitle,BufferSize,"P_{T} Weighted #Delta#phi Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 553 fHistDeltaPhiMixPt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
3b7aa4ba 554 fHistDeltaPhiMixPt[i][imult][isign][imc]->Sumw2();
555 fHistDeltaPhiMixPt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
556 fHistDeltaPhiMixPt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
557 fOutput->Add(fHistDeltaPhiMixPt[i][imult][isign][imc]);
d514944f 558
559 snprintf(histname,BufferSize,"fHistDeltaPhiMixV2Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
560 snprintf(histtitle,BufferSize,"P_{T} Weighted #Delta#phi Mixed Event V2 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
561 fHistDeltaPhiMixV2Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
562 fHistDeltaPhiMixV2Pt[i][imult][isign][imc]->Sumw2();
563 fHistDeltaPhiMixV2Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
564 fHistDeltaPhiMixV2Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
565 fOutput->Add(fHistDeltaPhiMixV2Pt[i][imult][isign][imc]);
566
567 snprintf(histname,BufferSize,"fHistDeltaPhiMixV3Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
568 snprintf(histtitle,BufferSize,"P_{T} Weighted #Delta#phi Mixed Event V3 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
569 fHistDeltaPhiMixV3Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
570 fHistDeltaPhiMixV3Pt[i][imult][isign][imc]->Sumw2();
571 fHistDeltaPhiMixV3Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
572 fHistDeltaPhiMixV3Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
573 fOutput->Add(fHistDeltaPhiMixV3Pt[i][imult][isign][imc]);
3b7aa4ba 574
d514944f 575 snprintf(histname,BufferSize,"fHistDeltaPhiMixV4Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
576 snprintf(histtitle,BufferSize,"P_{T} Weighted #Delta#phi Mixed Event V4 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
577 fHistDeltaPhiMixV4Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinPhi,phiArray,lptbins,fPtAssocArray);
578 fHistDeltaPhiMixV4Pt[i][imult][isign][imc]->Sumw2();
579 fHistDeltaPhiMixV4Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#phi");
580 fHistDeltaPhiMixV4Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
581 fOutput->Add(fHistDeltaPhiMixV4Pt[i][imult][isign][imc]);
582
583
3b7aa4ba 584 //etaNear
d514944f 585 snprintf(histname,BufferSize,"fHistDeltaEtaN_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
586 snprintf(histtitle,BufferSize,"Near-Side #Delta#eta Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 587 fHistDeltaEtaN[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 588 fHistDeltaEtaN[i][imult][isign][imc]->Sumw2();
589 fHistDeltaEtaN[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
590 fHistDeltaEtaN[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
591 fOutput->Add(fHistDeltaEtaN[i][imult][isign][imc]);
592
d514944f 593 snprintf(histname,BufferSize,"fHistDeltaEtaNPt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
594 snprintf(histtitle,BufferSize,"Near-Side P_{T} Weighted #Delta#eta Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 595 fHistDeltaEtaNPt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 596 fHistDeltaEtaNPt[i][imult][isign][imc]->Sumw2();
597 fHistDeltaEtaNPt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
598 fHistDeltaEtaNPt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
599 fOutput->Add(fHistDeltaEtaNPt[i][imult][isign][imc]);
600
d514944f 601 snprintf(histname,BufferSize,"fHistDeltaEtaNMix_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
602 snprintf(histtitle,BufferSize,"Near-Side #Delta#eta Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 603 fHistDeltaEtaNMix[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 604 fHistDeltaEtaNMix[i][imult][isign][imc]->Sumw2();
605 fHistDeltaEtaNMix[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
606 fHistDeltaEtaNMix[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
607 fOutput->Add(fHistDeltaEtaNMix[i][imult][isign][imc]);
d514944f 608
609 snprintf(histname,BufferSize,"fHistDeltaEtaNMixV2_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
610 snprintf(histtitle,BufferSize,"Near-Side #Delta#eta Mixed Event V2 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
611 fHistDeltaEtaNMixV2[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
612 fHistDeltaEtaNMixV2[i][imult][isign][imc]->Sumw2();
613 fHistDeltaEtaNMixV2[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
614 fHistDeltaEtaNMixV2[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
615 fOutput->Add(fHistDeltaEtaNMixV2[i][imult][isign][imc]);
616
617 snprintf(histname,BufferSize,"fHistDeltaEtaNMixV3_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
618 snprintf(histtitle,BufferSize,"Near-Side #Delta#eta Mixed Event V2 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
619 fHistDeltaEtaNMixV3[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
620 fHistDeltaEtaNMixV3[i][imult][isign][imc]->Sumw2();
621 fHistDeltaEtaNMixV3[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
622 fHistDeltaEtaNMixV3[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
623 fOutput->Add(fHistDeltaEtaNMixV3[i][imult][isign][imc]);
624
625 snprintf(histname,BufferSize,"fHistDeltaEtaNMixV4_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
626 snprintf(histtitle,BufferSize,"Near-Side #Delta#eta Mixed Event V4 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
627 fHistDeltaEtaNMixV4[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
628 fHistDeltaEtaNMixV4[i][imult][isign][imc]->Sumw2();
629 fHistDeltaEtaNMixV4[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
630 fHistDeltaEtaNMixV4[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
631 fOutput->Add(fHistDeltaEtaNMixV4[i][imult][isign][imc]);
632
3b7aa4ba 633
d514944f 634 snprintf(histname,BufferSize,"fHistDeltaEtaNMixPt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
635 snprintf(histtitle,BufferSize,"Near-Side P_{T} Weighted #Delta#eta Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 636 fHistDeltaEtaNMixPt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 637 fHistDeltaEtaNMixPt[i][imult][isign][imc]->Sumw2();
638 fHistDeltaEtaNMixPt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
639 fHistDeltaEtaNMixPt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
640 fOutput->Add(fHistDeltaEtaNMixPt[i][imult][isign][imc]);
d514944f 641
642 snprintf(histname,BufferSize,"fHistDeltaEtaNMixV2Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
643 snprintf(histtitle,BufferSize,"Near-Side P_{T} Weighted #Delta#eta Mixed Event V2 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
644 fHistDeltaEtaNMixV2Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
645 fHistDeltaEtaNMixV2Pt[i][imult][isign][imc]->Sumw2();
646 fHistDeltaEtaNMixV2Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
647 fHistDeltaEtaNMixV2Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
648 fOutput->Add(fHistDeltaEtaNMixV2Pt[i][imult][isign][imc]);
649
650 snprintf(histname,BufferSize,"fHistDeltaEtaNMixV3Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
651 snprintf(histtitle,BufferSize,"Near-Side P_{T} Weighted #Delta#eta Mixed Event V2 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
652 fHistDeltaEtaNMixV3Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
653 fHistDeltaEtaNMixV3Pt[i][imult][isign][imc]->Sumw2();
654 fHistDeltaEtaNMixV3Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
655 fHistDeltaEtaNMixV3Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
656 fOutput->Add(fHistDeltaEtaNMixV3Pt[i][imult][isign][imc]);
657
658 snprintf(histname,BufferSize,"fHistDeltaEtaNMixV4Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
659 snprintf(histtitle,BufferSize,"Near-Side P_{T} Weighted #Delta#eta V4 Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
660 fHistDeltaEtaNMixV4Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
661 fHistDeltaEtaNMixV4Pt[i][imult][isign][imc]->Sumw2();
662 fHistDeltaEtaNMixV4Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
663 fHistDeltaEtaNMixV4Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
664 fOutput->Add(fHistDeltaEtaNMixV4Pt[i][imult][isign][imc]);
665
3b7aa4ba 666 //Away Eta
d514944f 667 snprintf(histname,BufferSize,"fHistDeltaEtaA_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
668 snprintf(histtitle,BufferSize,"Away-Side #Delta#eta Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 669 fHistDeltaEtaA[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 670 fHistDeltaEtaA[i][imult][isign][imc]->Sumw2();
671 fHistDeltaEtaA[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
672 fHistDeltaEtaA[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
673 fOutput->Add(fHistDeltaEtaA[i][imult][isign][imc]);
674
d514944f 675 snprintf(histname,BufferSize,"fHistDeltaEtaAPt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
676 snprintf(histtitle,BufferSize,"Away-Side P_{T} Weighted #Delta#eta Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 677 fHistDeltaEtaAPt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 678 fHistDeltaEtaAPt[i][imult][isign][imc]->Sumw2();
679 fHistDeltaEtaAPt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
680 fHistDeltaEtaAPt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
681 fOutput->Add(fHistDeltaEtaAPt[i][imult][isign][imc]);
682
d514944f 683 snprintf(histname,BufferSize,"fHistDeltaEtaAMix_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
684 snprintf(histtitle,BufferSize,"Away-Side #Delta#eta Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 685 fHistDeltaEtaAMix[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 686 fHistDeltaEtaAMix[i][imult][isign][imc]->Sumw2();
687 fHistDeltaEtaAMix[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
688 fHistDeltaEtaAMix[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
689 fOutput->Add(fHistDeltaEtaAMix[i][imult][isign][imc]);
d514944f 690
691 snprintf(histname,BufferSize,"fHistDeltaEtaAMixV2_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
692 snprintf(histtitle,BufferSize,"Away-Side #Delta#eta Mixed Event V2 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
693 fHistDeltaEtaAMixV2[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
694 fHistDeltaEtaAMixV2[i][imult][isign][imc]->Sumw2();
695 fHistDeltaEtaAMixV2[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
696 fHistDeltaEtaAMixV2[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
697 fOutput->Add(fHistDeltaEtaAMixV2[i][imult][isign][imc]);
698
699
700 snprintf(histname,BufferSize,"fHistDeltaEtaAMixV3_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
701 snprintf(histtitle,BufferSize,"Away-Side #Delta#eta Mixed Event V3 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
702 fHistDeltaEtaAMixV3[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
703 fHistDeltaEtaAMixV3[i][imult][isign][imc]->Sumw2();
704 fHistDeltaEtaAMixV3[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
705 fHistDeltaEtaAMixV3[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
706 fOutput->Add(fHistDeltaEtaAMixV3[i][imult][isign][imc]);
707
708
709 snprintf(histname,BufferSize,"fHistDeltaEtaAMixV4_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
710 snprintf(histtitle,BufferSize,"Away-Side #Delta#eta Mixed Event V4 Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
711 fHistDeltaEtaAMixV4[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
712 fHistDeltaEtaAMixV4[i][imult][isign][imc]->Sumw2();
713 fHistDeltaEtaAMixV4[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
714 fHistDeltaEtaAMixV4[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
715 fOutput->Add(fHistDeltaEtaAMixV4[i][imult][isign][imc]);
3b7aa4ba 716
d514944f 717 snprintf(histname,BufferSize,"fHistDeltaEtaAMixPt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
718 snprintf(histtitle,BufferSize,"Away-Side P_{T} Weighted #Delta#eta Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
69088c96 719 fHistDeltaEtaAMixPt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
3b7aa4ba 720 fHistDeltaEtaAMixPt[i][imult][isign][imc]->Sumw2();
721 fHistDeltaEtaAMixPt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
722 fHistDeltaEtaAMixPt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
723 fOutput->Add(fHistDeltaEtaAMixPt[i][imult][isign][imc]);
724
d514944f 725 snprintf(histname,BufferSize,"fHistDeltaEtaAMixV2Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
726 snprintf(histtitle,BufferSize,"Away-Side P_{T} Weighted V2 #Delta#eta Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
727 fHistDeltaEtaAMixV2Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
728 fHistDeltaEtaAMixV2Pt[i][imult][isign][imc]->Sumw2();
729 fHistDeltaEtaAMixV2Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
730 fHistDeltaEtaAMixV2Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
731 fOutput->Add(fHistDeltaEtaAMixV2Pt[i][imult][isign][imc]);
732
733 snprintf(histname,BufferSize,"fHistDeltaEtaAMixV3Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
734 snprintf(histtitle,BufferSize,"Away-Side P_{T} Weighted V3 #Delta#eta Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
735 fHistDeltaEtaAMixV3Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
736 fHistDeltaEtaAMixV3Pt[i][imult][isign][imc]->Sumw2();
737 fHistDeltaEtaAMixV3Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
738 fHistDeltaEtaAMixV3Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
739 fOutput->Add(fHistDeltaEtaAMixV3Pt[i][imult][isign][imc]);
740
741 snprintf(histname,BufferSize,"fHistDeltaEtaAMixV4Pt_P%d_C%d%s%s",i,imult,sign1[isign],cmc1[imc]);
742 snprintf(histtitle,BufferSize,"Away-Side P_{T} Weighted #Delta#eta V4 Mixed Event Distribution with %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],sign2[isign],cmc2[imc]);
743 fHistDeltaEtaAMixV4Pt[i][imult][isign][imc]=new TH2F(histname,histtitle,fnBinEta,etaArray,lptbins,fPtAssocArray);
744 fHistDeltaEtaAMixV4Pt[i][imult][isign][imc]->Sumw2();
745 fHistDeltaEtaAMixV4Pt[i][imult][isign][imc]->GetXaxis()->SetTitle("#Delta#eta");
746 fHistDeltaEtaAMixV4Pt[i][imult][isign][imc]->GetYaxis()->SetTitle("p_{T}");
747 fOutput->Add(fHistDeltaEtaAMixV4Pt[i][imult][isign][imc]);
748
3b7aa4ba 749
750 //====
751 }//end isignloop
d514944f 752 snprintf(histname,BufferSize,"fHistDeltaPhiEta_P%d_C%d%s",i,imult,cmc1[imc]);
753 snprintf(histtitle,BufferSize,"#Delta#phi-#Delta#eta %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 754 fHistDeltaPhiEta[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
3b7aa4ba 755 fHistDeltaPhiEta[i][imult][imc]->Sumw2();
756 fHistDeltaPhiEta[i][imult][imc]->GetXaxis()->SetTitle("#phi");
757 fHistDeltaPhiEta[i][imult][imc]->GetYaxis()->SetTitle("#eta");
758 fHistDeltaPhiEta[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
759 fOutput->Add(fHistDeltaPhiEta[i][imult][imc]);
760
d514944f 761
762 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMix_P%d_C%d%s",i,imult,cmc1[imc]);
763 snprintf(histtitle,BufferSize,"#Delta#phi-#Delta#eta from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 764 fHistDeltaPhiEtaMix[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
3b7aa4ba 765 fHistDeltaPhiEtaMix[i][imult][imc]->Sumw2();
766 fHistDeltaPhiEtaMix[i][imult][imc]->GetXaxis()->SetTitle("#phi");
767 fHistDeltaPhiEtaMix[i][imult][imc]->GetYaxis()->SetTitle("#eta");
768 fHistDeltaPhiEtaMix[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
769 fOutput->Add(fHistDeltaPhiEtaMix[i][imult][imc]);
d514944f 770
771 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMixV2_P%d_C%d%s",i,imult,cmc1[imc]);
772 snprintf(histtitle,BufferSize,"#Delta#phi-#Delta#eta V2 from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
773 fHistDeltaPhiEtaMixV2[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
774 fHistDeltaPhiEtaMixV2[i][imult][imc]->Sumw2();
775 fHistDeltaPhiEtaMixV2[i][imult][imc]->GetXaxis()->SetTitle("#phi");
776 fHistDeltaPhiEtaMixV2[i][imult][imc]->GetYaxis()->SetTitle("#eta");
777 fHistDeltaPhiEtaMixV2[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
778 fOutput->Add(fHistDeltaPhiEtaMixV2[i][imult][imc]);
779
780 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMixV3_P%d_C%d%s",i,imult,cmc1[imc]);
781 snprintf(histtitle,BufferSize,"#Delta#phi-#Delta#eta V3 from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
782 fHistDeltaPhiEtaMixV3[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
783 fHistDeltaPhiEtaMixV3[i][imult][imc]->Sumw2();
784 fHistDeltaPhiEtaMixV3[i][imult][imc]->GetXaxis()->SetTitle("#phi");
785 fHistDeltaPhiEtaMixV3[i][imult][imc]->GetYaxis()->SetTitle("#eta");
786 fHistDeltaPhiEtaMixV3[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
787 fOutput->Add(fHistDeltaPhiEtaMixV3[i][imult][imc]);
788
789 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMixV4_P%d_C%d%s",i,imult,cmc1[imc]);
790 snprintf(histtitle,BufferSize,"#Delta#phi-#Delta#eta V4 from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
791 fHistDeltaPhiEtaMixV4[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
792 fHistDeltaPhiEtaMixV4[i][imult][imc]->Sumw2();
793 fHistDeltaPhiEtaMixV4[i][imult][imc]->GetXaxis()->SetTitle("#phi");
794 fHistDeltaPhiEtaMixV4[i][imult][imc]->GetYaxis()->SetTitle("#eta");
795 fHistDeltaPhiEtaMixV4[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
796 fOutput->Add(fHistDeltaPhiEtaMixV4[i][imult][imc]);
3b7aa4ba 797
d514944f 798 snprintf(histname,BufferSize,"fHistPhiEtaTrigPt_P%d_C%d%s",i,imult,cmc1[imc]);
799 snprintf(histtitle,BufferSize,"P_{T}-Weighted #phi-#eta distribution in triggered events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 800 fHistPhiEtaTrigPt[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
3b7aa4ba 801 fHistPhiEtaTrigPt[i][imult][imc]->Sumw2();
802 fHistPhiEtaTrigPt[i][imult][imc]->GetXaxis()->SetTitle("#phi");
803 fHistPhiEtaTrigPt[i][imult][imc]->GetYaxis()->SetTitle("#eta");
804 fHistPhiEtaTrigPt[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
805 fOutput->Add(fHistPhiEtaTrigPt[i][imult][imc]);
806
d514944f 807 snprintf(histname,BufferSize,"fHistDeltaPhiEtaPt_P%d_C%d%s",i,imult,cmc1[imc]);
808 snprintf(histtitle,BufferSize,"P_{T}-Weighted #Delta#phi-#Delta#eta %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 809 fHistDeltaPhiEtaPt[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
3b7aa4ba 810 fHistDeltaPhiEtaPt[i][imult][imc]->Sumw2();
811 fHistDeltaPhiEtaPt[i][imult][imc]->GetXaxis()->SetTitle("#phi");
812 fHistDeltaPhiEtaPt[i][imult][imc]->GetYaxis()->SetTitle("#eta");
813 fHistDeltaPhiEtaPt[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
814 fOutput->Add(fHistDeltaPhiEtaPt[i][imult][imc]);
815
d514944f 816 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMixPt_P%d_C%d%s",i,imult,cmc1[imc]);
817 snprintf(histtitle,BufferSize,"P_{T}-Weighted #Delta#phi-#Delta#eta from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
69088c96 818 fHistDeltaPhiEtaMixPt[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
3b7aa4ba 819 fHistDeltaPhiEtaMixPt[i][imult][imc]->Sumw2();
820 fHistDeltaPhiEtaMixPt[i][imult][imc]->GetXaxis()->SetTitle("#phi");
821 fHistDeltaPhiEtaMixPt[i][imult][imc]->GetYaxis()->SetTitle("#eta");
822 fHistDeltaPhiEtaMixPt[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
823 fOutput->Add(fHistDeltaPhiEtaMixPt[i][imult][imc]);
824
d514944f 825 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMixV2Pt_P%d_C%d%s",i,imult,cmc1[imc]);
826 snprintf(histtitle,BufferSize,"P_{T}-Weighted #Delta#phi-#Delta#eta V2 from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
827 fHistDeltaPhiEtaMixV2Pt[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
828 fHistDeltaPhiEtaMixV2Pt[i][imult][imc]->Sumw2();
829 fHistDeltaPhiEtaMixV2Pt[i][imult][imc]->GetXaxis()->SetTitle("#phi");
830 fHistDeltaPhiEtaMixV2Pt[i][imult][imc]->GetYaxis()->SetTitle("#eta");
831 fHistDeltaPhiEtaMixV2Pt[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
832 fOutput->Add(fHistDeltaPhiEtaMixV2Pt[i][imult][imc]);
833
834 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMixV3Pt_P%d_C%d%s",i,imult,cmc1[imc]);
835 snprintf(histtitle,BufferSize,"P_{T}-Weighted #Delta#phi-#Delta#eta V3 from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
836 fHistDeltaPhiEtaMixV3Pt[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
837 fHistDeltaPhiEtaMixV3Pt[i][imult][imc]->Sumw2();
838 fHistDeltaPhiEtaMixV3Pt[i][imult][imc]->GetXaxis()->SetTitle("#phi");
839 fHistDeltaPhiEtaMixV3Pt[i][imult][imc]->GetYaxis()->SetTitle("#eta");
840 fHistDeltaPhiEtaMixV3Pt[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
841 fOutput->Add(fHistDeltaPhiEtaMixV3Pt[i][imult][imc]);
842
843 snprintf(histname,BufferSize,"fHistDeltaPhiEtaMixV4Pt_P%d_C%d%s",i,imult,cmc1[imc]);
844 snprintf(histtitle,BufferSize,"P_{T}-Weighted #Delta#phi-#Delta#eta V4 from Mixed Events %3.1f<p_{T}^{Trig}<%3.1f %dMult%d%s",fPtTrigArray[i],fPtTrigArray[i+1],fCentArrayMin[imult],fCentArrayMax[imult],cmc2[imc]);
845 fHistDeltaPhiEtaMixV4Pt[i][imult][imc]=new TH3F(histname,histtitle,fnBinPhiEtaPhi,phiEtaArrayPhi,fnBinPhiEtaEta,phiEtaArrayEta,lptbins,fPtAssocArray);
846 fHistDeltaPhiEtaMixV4Pt[i][imult][imc]->Sumw2();
847 fHistDeltaPhiEtaMixV4Pt[i][imult][imc]->GetXaxis()->SetTitle("#phi");
848 fHistDeltaPhiEtaMixV4Pt[i][imult][imc]->GetYaxis()->SetTitle("#eta");
849 fHistDeltaPhiEtaMixV4Pt[i][imult][imc]->GetZaxis()->SetTitle("p_{T}");
850 fOutput->Add(fHistDeltaPhiEtaMixV4Pt[i][imult][imc]);
851
3b7aa4ba 852 //Three-Particle Histograms
853 for(int ipt=0;ipt<fNAPt3Bins;ipt++){
854 for(int iSign=0;iSign<4;iSign++){
d514944f 855 snprintf(histname,BufferSize,"fHistDeltaPhiPhi_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
856 snprintf(histtitle,BufferSize,"Raw #Delta#phi-#Delta#phi %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
3b7aa4ba 857 fHistDeltaPhiPhi[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
858 fHistDeltaPhiPhi[i][ipt][imult][iSign][imc]->Sumw2();
859 fHistDeltaPhiPhi[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
860 fHistDeltaPhiPhi[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
861 fOutput->Add(fHistDeltaPhiPhi[i][ipt][imult][iSign][imc]);
862
d514944f 863 snprintf(histname,BufferSize,"fHistDeltaPhiPhiMix_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
864 snprintf(histtitle,BufferSize,"Mixed #Delta#phi-#Delta#phi %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
3b7aa4ba 865 fHistDeltaPhiPhiMix[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
866 fHistDeltaPhiPhiMix[i][ipt][imult][iSign][imc]->Sumw2();
867 fHistDeltaPhiPhiMix[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
868 fHistDeltaPhiPhiMix[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
869 fOutput->Add(fHistDeltaPhiPhiMix[i][ipt][imult][iSign][imc]);
870
d514944f 871 snprintf(histname,BufferSize,"fHistDeltaPhiPhiMixV2_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
872 snprintf(histtitle,BufferSize,"Mixed #Delta#phi-#Delta#phi V2 %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
873 fHistDeltaPhiPhiMixV2[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
874 fHistDeltaPhiPhiMixV2[i][ipt][imult][iSign][imc]->Sumw2();
875 fHistDeltaPhiPhiMixV2[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
876 fHistDeltaPhiPhiMixV2[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
877 fOutput->Add(fHistDeltaPhiPhiMixV2[i][ipt][imult][iSign][imc]);
878
879 snprintf(histname,BufferSize,"fHistDeltaPhiPhiMixV3_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
880 snprintf(histtitle,BufferSize,"Mixed #Delta#phi-#Delta#phi V3 %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
881 fHistDeltaPhiPhiMixV3[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
882 fHistDeltaPhiPhiMixV3[i][ipt][imult][iSign][imc]->Sumw2();
883 fHistDeltaPhiPhiMixV3[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
884 fHistDeltaPhiPhiMixV3[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
885 fOutput->Add(fHistDeltaPhiPhiMixV3[i][ipt][imult][iSign][imc]);
886
887 snprintf(histname,BufferSize,"fHistDeltaPhiPhiMixV4_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
888 snprintf(histtitle,BufferSize,"Mixed #Delta#phi-#Delta#phi V4 %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
889 fHistDeltaPhiPhiMixV4[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
890 fHistDeltaPhiPhiMixV4[i][ipt][imult][iSign][imc]->Sumw2();
891 fHistDeltaPhiPhiMixV4[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
892 fHistDeltaPhiPhiMixV4[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
893 fOutput->Add(fHistDeltaPhiPhiMixV4[i][ipt][imult][iSign][imc]);
894
895 snprintf(histname,BufferSize,"fHistDeltaPhiPhiMixV2V2V4_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
896 snprintf(histtitle,BufferSize,"Mixed #Delta#phi-#Delta#phi %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
897 fHistDeltaPhiPhiMixV2V2V4[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
898 fHistDeltaPhiPhiMixV2V2V4[i][ipt][imult][iSign][imc]->Sumw2();
899 fHistDeltaPhiPhiMixV2V2V4[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
900 fHistDeltaPhiPhiMixV2V2V4[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
901 fOutput->Add(fHistDeltaPhiPhiMixV2V2V4[i][ipt][imult][iSign][imc]);
902
903 snprintf(histname,BufferSize,"fHistDeltaPhiPhiSS_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
904 snprintf(histtitle,BufferSize,"Soft-Soft #Delta#phi-#Delta#phi %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
3b7aa4ba 905 fHistDeltaPhiPhiSS[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
906 fHistDeltaPhiPhiSS[i][ipt][imult][iSign][imc]->Sumw2();
907 fHistDeltaPhiPhiSS[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
908 fHistDeltaPhiPhiSS[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
909 fOutput->Add(fHistDeltaPhiPhiSS[i][ipt][imult][iSign][imc]);
910
d514944f 911 snprintf(histname,BufferSize,"fHistDeltaPhiPhiSSV2_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
912 snprintf(histtitle,BufferSize,"Soft-Soft V2 #Delta#phi-#Delta#phi %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
913 fHistDeltaPhiPhiSSV2[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
914 fHistDeltaPhiPhiSSV2[i][ipt][imult][iSign][imc]->Sumw2();
915 fHistDeltaPhiPhiSSV2[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
916 fHistDeltaPhiPhiSSV2[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
917 fOutput->Add(fHistDeltaPhiPhiSSV2[i][ipt][imult][iSign][imc]);
918
919 snprintf(histname,BufferSize,"fHistDeltaPhiPhiSSV3_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
920 snprintf(histtitle,BufferSize,"Soft-Soft V3 #Delta#phi-#Delta#phi %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
921 fHistDeltaPhiPhiSSV3[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
922 fHistDeltaPhiPhiSSV3[i][ipt][imult][iSign][imc]->Sumw2();
923 fHistDeltaPhiPhiSSV3[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
924 fHistDeltaPhiPhiSSV3[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
925 fOutput->Add(fHistDeltaPhiPhiSSV3[i][ipt][imult][iSign][imc]);
926
927 snprintf(histname,BufferSize,"fHistDeltaPhiPhiSSV4_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
928 snprintf(histtitle,BufferSize,"Soft-Soft V4 #Delta#phi-#Delta#phi %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
929 fHistDeltaPhiPhiSSV4[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinPhi3,fdPhiMin,fdPhiMax,fnBinPhi3,fdPhiMin,fdPhiMax);
930 fHistDeltaPhiPhiSSV4[i][ipt][imult][iSign][imc]->Sumw2();
931 fHistDeltaPhiPhiSSV4[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#phi_{1}");
932 fHistDeltaPhiPhiSSV4[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#phi_{2}");
933 fOutput->Add(fHistDeltaPhiPhiSSV4[i][ipt][imult][iSign][imc]);
934
935 snprintf(histname,BufferSize,"fHistDeltaEtaEta_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
936 snprintf(histtitle,BufferSize,"Raw #Delta#eta-#Delta#eta %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
69088c96 937 fHistDeltaEtaEta[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinEta3,-etaEdge,etaEdge,fnBinEta3,-etaEdge,etaEdge);
3b7aa4ba 938 fHistDeltaEtaEta[i][ipt][imult][iSign][imc]->Sumw2();
939 fHistDeltaEtaEta[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#eta_{1}");
940 fHistDeltaEtaEta[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#eta_{2}");
941 fOutput->Add(fHistDeltaEtaEta[i][ipt][imult][iSign][imc]);
942
d514944f 943snprintf(histname,BufferSize,"fHistDeltaEtaEtaMix_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
944 snprintf(histtitle,BufferSize,"Mixed #Delta#eta-#Delta#eta %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
69088c96 945 fHistDeltaEtaEtaMix[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinEta3,-etaEdge,etaEdge,fnBinEta3,-etaEdge,etaEdge);
3b7aa4ba 946 fHistDeltaEtaEtaMix[i][ipt][imult][iSign][imc]->Sumw2();
947 fHistDeltaEtaEtaMix[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#eta_{1}");
948 fHistDeltaEtaEtaMix[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#eta_{2}");
949 fOutput->Add(fHistDeltaEtaEtaMix[i][ipt][imult][iSign][imc]);
950
d514944f 951 snprintf(histname,BufferSize,"fHistDeltaEtaEtaMixV2_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
952 snprintf(histtitle,BufferSize,"Mixed #Delta#eta-#Delta#eta V2 %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
953 fHistDeltaEtaEtaMixV2[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinEta3,-etaEdge,etaEdge,fnBinEta3,-etaEdge,etaEdge);
954 fHistDeltaEtaEtaMixV2[i][ipt][imult][iSign][imc]->Sumw2();
955 fHistDeltaEtaEtaMixV2[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#eta_{1}");
956 fHistDeltaEtaEtaMixV2[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#eta_{2}");
957 fOutput->Add(fHistDeltaEtaEtaMixV2[i][ipt][imult][iSign][imc]);
958
959 snprintf(histname,BufferSize,"fHistDeltaEtaEtaMixV3_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
960 snprintf(histtitle,BufferSize,"Mixed #Delta#eta-#Delta#eta V3 %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
961 fHistDeltaEtaEtaMixV3[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinEta3,-etaEdge,etaEdge,fnBinEta3,-etaEdge,etaEdge);
962 fHistDeltaEtaEtaMixV3[i][ipt][imult][iSign][imc]->Sumw2();
963 fHistDeltaEtaEtaMixV3[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#eta_{1}");
964 fHistDeltaEtaEtaMixV3[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#eta_{2}");
965 fOutput->Add(fHistDeltaEtaEtaMixV3[i][ipt][imult][iSign][imc]);
966
967
968 snprintf(histname,BufferSize,"fHistDeltaEtaEtaMixV4_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
969 snprintf(histtitle,BufferSize,"Mixed #Delta#eta-#Delta#eta V4 %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
970 fHistDeltaEtaEtaMixV4[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinEta3,-etaEdge,etaEdge,fnBinEta3,-etaEdge,etaEdge);
971 fHistDeltaEtaEtaMixV4[i][ipt][imult][iSign][imc]->Sumw2();
972 fHistDeltaEtaEtaMixV4[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#eta_{1}");
973 fHistDeltaEtaEtaMixV4[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#eta_{2}");
974 fOutput->Add(fHistDeltaEtaEtaMixV4[i][ipt][imult][iSign][imc]);
975
976 snprintf(histname,BufferSize,"fHistDeltaEtaEtaMixV2V2V4_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
977 snprintf(histtitle,BufferSize,"Mixed #Delta#eta-#Delta#eta V2V2V4 %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
978 fHistDeltaEtaEtaMixV2V2V4[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinEta3,-etaEdge,etaEdge,fnBinEta3,-etaEdge,etaEdge);
979 fHistDeltaEtaEtaMixV2V2V4[i][ipt][imult][iSign][imc]->Sumw2();
980 fHistDeltaEtaEtaMixV2V2V4[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#eta_{1}");
981 fHistDeltaEtaEtaMixV2V2V4[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#eta_{2}");
982 fOutput->Add(fHistDeltaEtaEtaMixV2V2V4[i][ipt][imult][iSign][imc]);
983
984snprintf(histname,BufferSize,"fHistDeltaEtaEtaSS_P%dp%d_C%d%s%s",i,ipt,imult,cmc1[imc],sign31[iSign]);
985 snprintf(histtitle,BufferSize,"Soft-Soft #Delta#eta-#Delta#eta %3.1f<p_{T}^{Trig}<%3.1f %3.2f<p_{T}^{Assoc}<%3.2f %dMult%d%s%s",fPtTrigArray[i],fPtTrigArray[i+1],fPtAssoc3Array1[ipt],fPtAssoc3Array2[ipt],fCentArrayMin[imult],fCentArrayMax[imult],sign32[iSign],cmc2[imc]);
69088c96 986 fHistDeltaEtaEtaSS[i][ipt][imult][iSign][imc]=new TH2F(histname,histtitle,fnBinEta3,-etaEdge,etaEdge,fnBinEta3,-etaEdge,etaEdge);
3b7aa4ba 987 fHistDeltaEtaEtaSS[i][ipt][imult][iSign][imc]->Sumw2();
988 fHistDeltaEtaEtaSS[i][ipt][imult][iSign][imc]->GetXaxis()->SetTitle("#Delta#eta_{1}");
989 fHistDeltaEtaEtaSS[i][ipt][imult][iSign][imc]->GetYaxis()->SetTitle("#Delta#eta_{2}");
990 fOutput->Add(fHistDeltaEtaEtaSS[i][ipt][imult][iSign][imc]);
991
992 }//iSign
993 }//associated pt (ipt)
994 }//pt loop (i)
995 }//centrality loop (imult)
996 }//imc
69088c96 997 if(fDEBUG)Printf("OutPut Created");
3b7aa4ba 998}//CreateOutputObjects
d514944f 999/////////////////////////////////
69088c96 1000Int_t AliAnalysisTaskDiHadron::CheckVertex(const AliESDEvent *rESD){
1001 //checks whether the vertex passes cuts
3b7aa4ba 1002 Int_t rGood=-1;
69088c96 1003 Float_t vtx[3];
1004 vtx[0]=rESD->GetPrimaryVertex()->GetX();
1005 vtx[1]=rESD->GetPrimaryVertex()->GetY();
1006 vtx[2]=rESD->GetPrimaryVertex()->GetZ();
d514944f 1007 if((vtx[0]*vtx[0]+vtx[1]*vtx[1])<9&&fabs(vtx[2])<fVzCut) rGood=0; //vertex out of beam pipe
1008 //if(fabs(vtx[2])<fVzCut)rGood=0;//Vertex Z cut
69088c96 1009 if(fDEBUG)Printf("vtxZ %f",vtx[2]);
3b7aa4ba 1010 for(int i=0;i<fNVertexBins;i++){
69088c96 1011 if(vtx[2]>fVertexArray[i]&&vtx[2]<=fVertexArray[i+1]&&rGood==0)rGood=i;
3b7aa4ba 1012 }
1013 return rGood;
1014}
d514944f 1015///////////////////////////
1016Int_t AliAnalysisTaskDiHadron::CheckVertexAOD(const AliAODEvent *rAOD){
1017 //checks whether the vertex passes cuts
1018 Int_t rGood=-1;
1019 Float_t vtx[3];
1020 vtx[0]=rAOD->GetPrimaryVertex()->GetX();
1021 vtx[1]=rAOD->GetPrimaryVertex()->GetY();
1022 vtx[2]=rAOD->GetPrimaryVertex()->GetZ();
1023 if((vtx[0]*vtx[0]+vtx[1]*vtx[1])<9&&fabs(vtx[2])<fVzCut) rGood=0; //vertex out of beam pipe
1024 //if(fabs(vtx[2])<fVzCut)rGood=0;//Vertex Z cut
1025 if(fDEBUG)Printf("vtxZ %f",vtx[2]);
1026 for(int i=0;i<fNVertexBins;i++){
1027 if(vtx[2]>fVertexArray[i]&&vtx[2]<=fVertexArray[i+1]&&rGood==0)rGood=i;
1028 }
1029 return rGood;
1030}
1031///////////////////////////////
69088c96 1032Int_t AliAnalysisTaskDiHadron::CheckTrigger(const AliESDEvent *rESD){
1033 //checks whether the trigger passes cuts
d514944f 1034 if(fDEBUG)Printf("Checking Trigger");
3b7aa4ba 1035 Int_t rGood=0;
1036 TString trigID=rESD->GetFiredTriggerClasses();
0f3a7491 1037 int count=0;
69088c96 1038 char trigID2[50];
0f3a7491 1039 int stop=0;//in as a safety
1040
3b7aa4ba 1041 for(int i=0;i<fNIDs;i++){
0f3a7491 1042 if(stop==1)continue;
1043 for(int j=0;j<50;j++){
69088c96 1044 if(fTrigIDArray[count]==',')trigID2[j]='\0';
1045 else if(fTrigIDArray[count]=='\0'){trigID2[j]='\0';stop=1;}
1046 else trigID2[j]=fTrigIDArray[count];
0f3a7491 1047 count++;
69088c96 1048 if(trigID2[j]=='\0') break;
0f3a7491 1049 }
69088c96 1050 if(trigID.Contains(trigID2)) rGood=1;
3b7aa4ba 1051 }
1052 return rGood;
1053}
d514944f 1054///////////////////////////////////////////
1055Int_t AliAnalysisTaskDiHadron::CheckTriggerAOD(const AliAODEvent *rAOD){
1056 //checks whether the trigger passes cuts
1057 if(fDEBUG)Printf("Checking Trigger");
1058 Int_t rGood=0;
1059 TString trigID=rAOD->GetFiredTriggerClasses();
1060 int count=0;
1061 char trigID2[50];
1062 int stop=0;//in as a safety
1063
1064 for(int i=0;i<fNIDs;i++){
1065 if(stop==1)continue;
1066 for(int j=0;j<50;j++){
1067 if(fTrigIDArray[count]==',')trigID2[j]='\0';
1068 else if(fTrigIDArray[count]=='\0'){trigID2[j]='\0';stop=1;}
1069 else trigID2[j]=fTrigIDArray[count];
1070 count++;
1071 if(trigID2[j]=='\0') break;
1072 }
1073 if(trigID.Contains(trigID2)) rGood=1;
1074 }
1075 return rGood;
1076}
1077/////////////////////////////////////////////
3b7aa4ba 1078
d514944f 1079Int_t AliAnalysisTaskDiHadron::TrackCuts(const AliESDEvent *rESD, Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks){
1080 if(fDEBUG) Printf("Selecting Tracks");
3b7aa4ba 1081 //fills arrays with all of the tracks passing cuts
1082 rGoodTracks[0]=0;
69088c96 1083 Int_t lead=0;
1084 Float_t leadPt=0;
3b7aa4ba 1085 Int_t rTrack=fESD->GetNumberOfTracks();
1086 Float_t sPt, sEta, sPhi, sChi, sb[2], sbCov[3];
1087 Int_t sNcls, sNclsF, sITScls;
1088 Short_t sCharge;
1089 for(int iTrack=0;iTrack<rTrack;iTrack++){
69088c96 1090 AliESDtrack *eSDtrack=rESD->GetTrack(iTrack);
1091 const AliExternalTrackParam *conTrack = eSDtrack->GetConstrainedParam();
1092 if(!conTrack)continue;
1093 sPt=conTrack->Pt();
1094 //if(fDEBUG)Printf("Pt%f",rPt);
1095 sEta=conTrack->Eta();
1096 sPhi=conTrack->Phi();
1097 sCharge=conTrack->Charge();
d514944f 1098 if(fDEBUG) Printf("Pt%2.2f Eta%2.2f Phi%2.2f ", sPt,sEta,sPhi);
3b7aa4ba 1099 if(sPhi<fdPhiMin)sPhi+=2*fPi;
1100 if(sPhi>fdPhiMax)sPhi-=2*fPi;
1101 if(sPt<fMinPtAssoc||sPt>fMaxPtAssoc)continue;//set Pt range
1102 if(fabs(sEta)>fEtaCut)continue;//set Eta Range
1103 if(!sCharge)continue;
69088c96 1104 sNcls=eSDtrack->GetTPCNcls();
1105 //if(fDEBUG)Printf("NCLS%d",sNcls);
3b7aa4ba 1106 if(sNcls<fMinClustersTPC)continue;
d514944f 1107 sNclsF=eSDtrack->GetTPCnclsS();
1108 if((1-1.0*sNclsF/sNcls)<fMinClusterRatio)continue;//Clusters fit/ total
69088c96 1109 sChi=(eSDtrack->GetTPCchi2())/sNcls;
3b7aa4ba 1110 if(sChi>fMaxTPCchi2)continue;
69088c96 1111 sITScls=eSDtrack->GetNcls(0);
3b7aa4ba 1112 if(sITScls<fMinClustersITS)continue;
69088c96 1113 eSDtrack->GetImpactParameters(sb,sbCov);
d514944f 1114 if(fDEBUG)Printf("dca %2.2f %2.2f",sb[0],sb[1]);
3b7aa4ba 1115 if(!fDCA2D&&(sb[0]*sb[0]+sb[1]*sb[1])>(fMaxDCA*fMaxDCA))continue;//DCA cut
1116 if(fDCA2D==1&&(sb[0]*sb[0]/fMaxDCAXY/fMaxDCAXY+sb[1]*sb[1]/fMaxDCAZ/fMaxDCAZ)>1)continue;
1117 if(fDCA2D==2&&(0.35+0.42*std::pow(double(sPt),-0.9))<(sb[0]*sb[0]))continue;
69088c96 1118 if(eSDtrack->GetKinkIndex(0)>0)continue;//removes kinked tracks
d514944f 1119 if(!eSDtrack->GetStatus()&AliESDtrack::kTPCrefit&&fTPCRefit)continue;//refit in TPC
1120 if((fITSRefit==1||(fITSRefit==2&&sPt>5))&&!eSDtrack->GetStatus()&AliESDtrack::kITSrefit)continue;//refit of its tracks either for none,all, or >5 GeV/c
1121 if(fDEBUG)Printf("SPD %d %d ", eSDtrack->HasPointOnITSLayer(0), eSDtrack->HasPointOnITSLayer(1));
69088c96 1122 if(fSPDCut&&!eSDtrack->HasPointOnITSLayer(0)&&!eSDtrack->HasPointOnITSLayer(1))continue;
d514944f 1123 if(fDEBUG)Printf("Pass \n");
3b7aa4ba 1124 rPt[rGoodTracks[0]]=sPt;
1125 rEta[rGoodTracks[0]]=sEta;
1126 rPhi[rGoodTracks[0]]=sPhi;
1127 rCharge[rGoodTracks[0]]=sCharge;
1128 if(fEfficiencyCorr){
1129 if(sPt<fEffFitPt)rEff[rGoodTracks[0]]=1./fFitLow->Eval(sPt);
1130 else rEff[rGoodTracks[0]]=1./fFitHigh->Eval(sPt);
1131 }
1132 else rEff[rGoodTracks[0]]=1;
d514944f 1133 if(rEff[rGoodTracks[0]]!=rEff[rGoodTracks[0]]||rEff[rGoodTracks[0]]>1E8||rEff[rGoodTracks[0]]<-1E8){
1134 Printf("Efficiency Error %f %f",rEff[rGoodTracks[0]],rPt[rGoodTracks[0]]);
1135 continue;
1136 }
69088c96 1137 if(sPt>leadPt)lead=rGoodTracks[0];
d514944f 1138 if(sPt<fV2FitPt)rV2[rGoodTracks[0]]=fFitLowV2->Eval(sPt);
1139 else rV2[rGoodTracks[0]]=fFitHighV2->Eval(sPt);
1140 if(sPt<fV3FitPt)rV3[rGoodTracks[0]]=fFitLowV3->Eval(sPt);
1141 else rV3[rGoodTracks[0]]=fFitHighV3->Eval(sPt);
1142 if(sPt<fV4FitPt)rV4[rGoodTracks[0]]=fFitLowV4->Eval(sPt);
1143 else rV4[rGoodTracks[0]]=fFitHighV4->Eval(sPt);
1144 if(rV2[rGoodTracks[0]]!=rV2[rGoodTracks[0]]||rV2[rGoodTracks[0]]>1E8||rV2[rGoodTracks[0]]<-1E8){
1145 Printf("V2 Error %f %f",rV2[rGoodTracks[0]],rPt[rGoodTracks[0]]);
1146 continue;
1147 }
1148 if(rV4[rGoodTracks[0]]!=rV4[rGoodTracks[0]]||rV4[rGoodTracks[0]]>1E8||rV4[rGoodTracks[0]]<-1E8){
1149 Printf("V4 Error %f %f",rV4[rGoodTracks[0]],rPt[rGoodTracks[0]]);
1150 continue;
1151 }
1152
1153 //Printf("V2 %2.2f V4 %2.4f 1.15V2V2 %2.4f",rV2[rGoodTracks[0]],rV4[rGoodTracks[0]],1.15*pow(rV2[rGoodTracks[0]],2));
3b7aa4ba 1154 //rPtAssoc3[rGoodTracks[0]]=new Int_t [10];
1155 rNPtAssoc3[rGoodTracks[0]]=0;
1156 for(int apt3=0;apt3<fNAPt3Bins;apt3++){
1157 if(sPt<fPtAssoc3Array2[apt3]&&sPt>=fPtAssoc3Array1[apt3]){
1158 rPtAssoc3[rGoodTracks[0]][rNPtAssoc3[rGoodTracks[0]]]=apt3;
1159 rNPtAssoc3[rGoodTracks[0]]++;
1160 }
1161 }
1162
1163 rGoodTracks[0]++;
1164
1165 }
69088c96 1166 return lead;
3b7aa4ba 1167}
d514944f 1168/////////////////////////////////////////////
1169
1170Int_t AliAnalysisTaskDiHadron::TrackCutsAOD(const AliAODEvent *rAOD, Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks){
1171 if(fDEBUG) Printf("Selecting Tracks");
1172 //fills arrays with all of the tracks passing cuts
1173 rGoodTracks[0]=0;
1174 Int_t lead=0;
1175 Float_t leadPt=0;
1176 Int_t rTrack=fAOD->GetNTracks();
1177 Float_t sPt, sEta, sPhi, sChi, sb[2];
1178 Int_t sNcls, sNclsF, sITScls;
1179 Short_t sCharge;
1180 for(int iTrack=0;iTrack<rTrack;iTrack++){
1181 AliAODTrack *aodTrack=rAOD->GetTrack(iTrack);
1182 sPt=aodTrack->Pt();
1183 sEta=aodTrack->Eta();
1184 sPhi=aodTrack->Phi();
1185 sCharge=aodTrack->Charge();
1186 if(fDEBUG) Printf("Pt%2.2f Eta%2.2f Phi%2.2f ", sPt,sEta,sPhi);
1187 if(sPhi<fdPhiMin)sPhi+=2*fPi;
1188 if(sPhi>fdPhiMax)sPhi-=2*fPi;
1189 if(sPt<fMinPtAssoc||sPt>fMaxPtAssoc)continue;//set Pt range
1190 if(fabs(sEta)>fEtaCut)continue;//set Eta Range
1191 if(!sCharge)continue;
1192 sNcls=aodTrack->GetTPCNcls();
1193 if(sNcls<fMinClustersTPC)continue;
1194 sNclsF=aodTrack->GetTPCSharedMap().CountBits();
1195 if((1-1.0*sNclsF/sNcls)<fMinClusterRatio)continue;//Clusters shared/ total;
1196 sChi=aodTrack->Chi2perNDF();
1197 if(sChi>fMaxTPCchi2)continue;
1198 sITScls=aodTrack->GetNcls(0);
1199 if(sITScls<fMinClustersITS)continue;
1200 sb[0]=aodTrack->DCA();
1201 sb[1]=aodTrack->ZAtDCA();
1202 if(fDEBUG)Printf("dca %2.2f %2.2f",sb[0],sb[1]);
1203 if(!fDCA2D&&(sb[0]*sb[0]+sb[1]*sb[1])>(fMaxDCA*fMaxDCA))continue;//DCA cut
1204 if(fDCA2D==1&&(sb[0]*sb[0]/fMaxDCAXY/fMaxDCAXY+sb[1]*sb[1]/fMaxDCAZ/fMaxDCAZ)>1)continue;
1205 if(fDCA2D==2&&(0.35+0.42*std::pow(double(sPt),-0.9))<(sb[0])*sb[0])continue;
1206 //if(eSDtrack->GetKinkIndex(0)>0)continue;//removes kinked tracks
1207 if(!aodTrack->IsPrimaryCandidate())continue;//I assume this removes kinks
1208 //if(!aodTrack->GetStatus()&AliAODTrack::kTPCrefit&&fTPCRefit)continue;//refit in TPC
1209 //if((fITSRefit==1||(fITSRefit==2&&sPt>5))&&!aodTrack->GetStatus()&AliAODTrack::kITSrefit)continue;//refit of its tracks either for none,all, or >5 GeV/c
1210 if(fDEBUG)Printf("SPD %d %d ", aodTrack->HasPointOnITSLayer(0), aodTrack->HasPointOnITSLayer(1));
1211 if(fSPDCut&&!aodTrack->HasPointOnITSLayer(0)&&!aodTrack->HasPointOnITSLayer(1))continue;
1212 if(fDEBUG)Printf("Pass \n");
1213 rPt[rGoodTracks[0]]=sPt;
1214 rEta[rGoodTracks[0]]=sEta;
1215 rPhi[rGoodTracks[0]]=sPhi;
1216 rCharge[rGoodTracks[0]]=sCharge;
1217 if(fEfficiencyCorr){
1218 if(sPt<fEffFitPt)rEff[rGoodTracks[0]]=1./fFitLow->Eval(sPt);
1219 else rEff[rGoodTracks[0]]=1./fFitHigh->Eval(sPt);
1220 }
1221 else rEff[rGoodTracks[0]]=1;
1222 if(rEff[rGoodTracks[0]]!=rEff[rGoodTracks[0]]||rEff[rGoodTracks[0]]>1E8||rEff[rGoodTracks[0]]<-1E8){
1223 Printf("Efficiency Error %f %f",rEff[rGoodTracks[0]],rPt[rGoodTracks[0]]);
1224 continue;
1225 }
1226 if(sPt>leadPt)lead=rGoodTracks[0];
1227 if(sPt<fV2FitPt)rV2[rGoodTracks[0]]=fFitLowV2->Eval(sPt);
1228 else rV2[rGoodTracks[0]]=fFitHighV2->Eval(sPt);
1229 if(sPt<fV3FitPt)rV3[rGoodTracks[0]]=fFitLowV3->Eval(sPt);
1230 else rV3[rGoodTracks[0]]=fFitHighV3->Eval(sPt);
1231 if(sPt<fV4FitPt)rV4[rGoodTracks[0]]=fFitLowV4->Eval(sPt);
1232 else rV4[rGoodTracks[0]]=fFitHighV4->Eval(sPt);
1233 if(rV2[rGoodTracks[0]]!=rV2[rGoodTracks[0]]||rV2[rGoodTracks[0]]>1E8||rV2[rGoodTracks[0]]<-1E8){
1234 Printf("V2 Error %f %f",rV2[rGoodTracks[0]],rPt[rGoodTracks[0]]);
1235 continue;
1236 }
1237 if(rV4[rGoodTracks[0]]!=rV4[rGoodTracks[0]]||rV4[rGoodTracks[0]]>1E8||rV4[rGoodTracks[0]]<-1E8){
1238 Printf("V4 Error %f %f",rV4[rGoodTracks[0]],rPt[rGoodTracks[0]]);
1239 continue;
1240 }
1241
1242 rNPtAssoc3[rGoodTracks[0]]=0;
1243 for(int apt3=0;apt3<fNAPt3Bins;apt3++){
1244 if(sPt<fPtAssoc3Array2[apt3]&&sPt>=fPtAssoc3Array1[apt3]){
1245 rPtAssoc3[rGoodTracks[0]][rNPtAssoc3[rGoodTracks[0]]]=apt3;
1246 rNPtAssoc3[rGoodTracks[0]]++;
1247 }
1248 }
1249
1250 rGoodTracks[0]++;
1251
1252 }
1253 return lead;
1254}
1255///////////////////////////////////////////////////////
3b7aa4ba 1256
d514944f 1257Int_t AliAnalysisTaskDiHadron::TrackCutsMC(AliMCEvent *rMC, Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks){
1258 //Fills Arrays of MC particles
3b7aa4ba 1259 rGoodTracks[1]=0;
1260 AliStack *rStack=rMC->Stack();
1261 Int_t rTrack=rStack->GetNtrack();
1262 Float_t sPt, sEta, sPhi;
1263 Short_t sCharge;
69088c96 1264 Int_t lead=0;
1265 Float_t leadPt=0;
3b7aa4ba 1266 for(int iTrack=0;iTrack<rTrack;iTrack++){
1267 TParticle *rParticle=rStack->Particle(iTrack);
1268 sPt=rParticle->Pt();
69088c96 1269 //if(fDEBUG)Printf("MCPt%f",rPt);
3b7aa4ba 1270 sEta=rParticle->Eta();
1271 sPhi=rParticle->Phi();
1272 sCharge=rMC->GetTrack(iTrack)->Charge();
1273 if(sPhi<fdPhiMin)sPhi+=2*fPi;
1274 if(sPhi>fdPhiMax)sPhi-=2*fPi;
1275 if(sPt<fMinPtAssoc||sPt>fMaxPtAssoc)continue;//set Pt range
1276 if(fabs(sEta)>fEtaCut)continue;//set Eta Range
1277 if(!rStack->IsPhysicalPrimary(iTrack))continue;//primary particles only
1278 if(!sCharge)continue;//only charged particles kept
1279 rPt[rGoodTracks[1]]=sPt;
1280 rEta[rGoodTracks[1]]=sEta;
1281 rPhi[rGoodTracks[1]]=sPhi;
1282 rCharge[rGoodTracks[1]]=sCharge;
1283 rEff[rGoodTracks[1]]=1;
d514944f 1284 rV2[rGoodTracks[1]]=0;
1285 rV3[rGoodTracks[1]]=0;
1286 rV4[rGoodTracks[1]]=0;
69088c96 1287 if(sPt>leadPt)lead=rGoodTracks[1];
3b7aa4ba 1288 rNPtAssoc3[rGoodTracks[1]]=0;
1289 for(int apt3=0;apt3<fNAPt3Bins;apt3++){
1290 if(sPt<fPtAssoc3Array2[apt3]&&sPt>=fPtAssoc3Array1[apt3]){
1291 rPtAssoc3[rGoodTracks[1]][rNPtAssoc3[rGoodTracks[1]]]=apt3;
1292 rNPtAssoc3[rGoodTracks[1]]++;
1293 }
1294 }
1295 rGoodTracks[1]++;
1296 }
69088c96 1297 return lead;
3b7aa4ba 1298}
d514944f 1299//---------------------------------------------------------
1300Int_t AliAnalysisTaskDiHadron::TrackCutsSim(Float_t *rPt, Float_t *rEta, Float_t *rPhi, Short_t *rCharge, Float_t *rEff, Float_t *rV2, Float_t *rV3, Float_t *rV4, Int_t **rPtAssoc3, Int_t *rNPtAssoc3, Int_t *rGoodTracks){
1301
1302 float v2=fFitHighV2->Eval(3.);
1303 float v3=fFitHighV3->Eval(3.);
1304 float v4=fFitHighV4->Eval(3.);
1305 Int_t lead=0;
1306 rGoodTracks[0]=0;
1307
1308 TF1 *SimFlow=new TF1("SimFlow","1+2*[0]*cos(2*x)+2*[1]*cos(3*(x-[2]))+2*[3]*cos(4*x)",-TMath::Pi(),TMath::Pi());
1309 Float_t V3PlaneAngle=2*TMath::Pi()*gRandom->Rndm();
1310 SimFlow->SetParameters(v2,v3,V3PlaneAngle,v4);
1311 // SimFlow->SetParameters(0,0,0,0);
1312 TF1 *SimNear=new TF1("SimNear","exp(-0.5*x*x/[0]/[0])",-TMath::Pi(),TMath::Pi());
1313 SimNear->SetParameter(0,0.3);
1314 TF1 *SimAway=new TF1("SimAway","exp(-0.5*x*x/[0]/[0])",-TMath::Pi(),TMath::Pi());
1315 SimAway->SetParameter(0,0.5);//0.5 for DiJet 0.3 for cone
1316
1317 TF1 *SimAway2=new TF1("SimAway2","exp(-0.5*(x-[1])*(x-[1])/[0]/[0])+exp(-0.5*(x+[1])*(x+[1])/[0]/[0])",-TMath::Pi(),TMath::Pi());
1318 SimAway2->SetParameter(0,0.3);//0.5 for DiJet 0.3 for cone
1319 SimAway2->SetParameter(1,1.4);//Cone Angle
1320
1321 // TF1 *AwayProb=new TF1("AwayProb","[0]");
1322 TF1 *AwayProb=new TF1("AwayProb","[0]*cos(2*x)*cos(2*x)");
1323 //AwayProb->SetParameter(0,0.5);
1324 AwayProb->SetParameter(0,1);
1325 Int_t AwayDeflected=0;
1326
1327
1328 // TF1 *SimAway=new TF1("SimAway","0.035+2*[0]*[0]*cos(2*x)+2*[1]*[1]*cos(3*x)+2*[2]*[2]*cos(4*x)",1.0,TMath::Pi()*2-1.0);
1329 // SimAway->SetParameters(v2,v3,v4);
1330 // TF1 *SimAway2=new TF1("SimAway2","0.035+2*[0]*[0]*cos(2*x)+2*[1]*[1]*cos(3*x)+2*[2]*[2]*cos(4*x)",1.05,TMath::Pi()*2-1.05);
1331 //SimAway->SetParameters(v2,v3,v4);
1332
1333 Float_t RPAngle=2*TMath::Pi()*gRandom->Rndm();
1334 Float_t TrigAngle;
1335 Float_t sPt,sPhi;
1336 Int_t InAccpt;
1337 Int_t AccptPercent=4;//1 over this is % in aceptance on away-side
1338 Int_t AwaySidePM=0;
1339
1340 Int_t AwaySide1=1;
1341 //Use SimAway1 or 2
1342 // if(gRandom->Rndm()<AwayProb->Eval(RPAngle))AwaySide1=1;
1343 //else AwaySide1=2;
1344
1345 for(int i=0;i<gRandom->Poisson(fSimNBgPart);i++){
1346 sPt=1.5;
1347 rPt[rGoodTracks[0]]=sPt;
1348 rEta[rGoodTracks[0]]=0;
1349 sPhi=SimFlow->GetRandom()+RPAngle;
1350 if(sPhi<fdPhiMin)sPhi+=2*fPi;
1351 if(sPhi>fdPhiMax)sPhi-=2*fPi;
1352 rPhi[rGoodTracks[0]]=sPhi;
1353 rCharge[rGoodTracks[0]]=1;
1354 rEff[rGoodTracks[0]]=1;
1355 rV2[rGoodTracks[0]]=v2;
1356 rV3[rGoodTracks[0]]=v3;
1357 rV4[rGoodTracks[0]]=v4;
1358 rNPtAssoc3[rGoodTracks[0]]=0;
1359 for(int apt3=0;apt3<fNAPt3Bins;apt3++){
1360 if(sPt<fPtAssoc3Array2[apt3]&&sPt>=fPtAssoc3Array1[apt3]){
1361 rPtAssoc3[rGoodTracks[0]][rNPtAssoc3[rGoodTracks[0]]]=apt3;
1362 rNPtAssoc3[rGoodTracks[0]]++;
1363 }
1364 }
1365 rGoodTracks[0]++;
1366 }
1367 for(int i=0;i<gRandom->Poisson(fSimNJet);i++){
1368 TrigAngle=SimFlow->GetRandom()+RPAngle;
1369 if(gRandom->Rndm()<AwayProb->Eval(TrigAngle-RPAngle))AwaySide1=1;
1370 else AwaySide1=2;
1371 sPhi=TrigAngle;
1372 if(sPhi<fdPhiMin)sPhi+=2*fPi;
1373 if(sPhi>fdPhiMax)sPhi-=2*fPi;
1374 sPt=3.1;
1375 rPt[rGoodTracks[0]]=sPt;
1376 rEta[rGoodTracks[0]]=0;
1377 rPhi[rGoodTracks[0]]=sPhi;
1378 rCharge[rGoodTracks[0]]=1;
1379 rEff[rGoodTracks[0]]=1;
1380 rV2[rGoodTracks[0]]=v2;
1381 rV3[rGoodTracks[0]]=v3;
1382 rV4[rGoodTracks[0]]=v4;
1383 rNPtAssoc3[rGoodTracks[0]]=0;
1384 lead=rGoodTracks[0];
1385 rGoodTracks[0]++;
1386
1387 for(int k=0;k<gRandom->Poisson(fSimNJetPart);k++){
1388 sPhi=SimNear->GetRandom()+TrigAngle;
1389 if(sPhi<fdPhiMin)sPhi+=2*fPi;
1390 if(sPhi>fdPhiMax)sPhi-=2*fPi;
1391 sPt=1.5;
1392 rPt[rGoodTracks[0]]=sPt;
1393 rEta[rGoodTracks[0]]=0;
1394 rPhi[rGoodTracks[0]]=sPhi;
1395 rCharge[rGoodTracks[0]]=1;
1396 rEff[rGoodTracks[0]]=1;
1397 rV2[rGoodTracks[0]]=v2;
1398 rV3[rGoodTracks[0]]=v3;
1399 rV4[rGoodTracks[0]]=v4;
1400 rNPtAssoc3[rGoodTracks[0]]=0;
1401 for(int apt3=0;apt3<fNAPt3Bins;apt3++){
1402 if(sPt<fPtAssoc3Array2[apt3]&&sPt>=fPtAssoc3Array1[apt3]){
1403 rPtAssoc3[rGoodTracks[0]][rNPtAssoc3[rGoodTracks[0]]]=apt3;
1404 rNPtAssoc3[rGoodTracks[0]]++;
1405 }
1406 }
1407 rGoodTracks[0]++;
1408 }
1409
1410 if(gRandom->Rndm()<1./AccptPercent)InAccpt=1;
1411 else InAccpt=0;
1412 if(gRandom->Rndm()<0.5)AwaySidePM=0;
1413 else AwaySidePM=1;
1414 for(int k=0;k<gRandom->Poisson(InAccpt*AccptPercent*fSimNJetPart);k++){
1415 //sPhi=SimAway->GetRandom()+TrigAngle+TMath::Pi();
1416 if(AwaySide1==1)sPhi=SimAway->GetRandom();
1417 else(sPhi=SimAway2->GetRandom());
1418 if(AwayDeflected){
1419 if(sPhi>0&&AwaySidePM)sPhi=-sPhi;
1420 else if(sPhi<0&&!AwaySidePM)sPhi=-sPhi;
1421 }
1422 sPhi+=TrigAngle+fPi;
1423 if(sPhi<fdPhiMin)sPhi+=2*fPi;
1424 if(sPhi>fdPhiMax)sPhi-=2*fPi;
1425 sPt=1.5;
1426 rPt[rGoodTracks[0]]=sPt;
1427 rEta[rGoodTracks[0]]=0;
1428 rPhi[rGoodTracks[0]]=sPhi;
1429 rCharge[rGoodTracks[0]]=1;
1430 rEff[rGoodTracks[0]]=1;
1431 rV2[rGoodTracks[0]]=v2;
1432 rV3[rGoodTracks[0]]=v3;
1433 rV4[rGoodTracks[0]]=v4;
1434 rNPtAssoc3[rGoodTracks[0]]=0;
1435 for(int apt3=0;apt3<fNAPt3Bins;apt3++){
1436 if(sPt<fPtAssoc3Array2[apt3]&&sPt>=fPtAssoc3Array1[apt3]){
1437 rPtAssoc3[rGoodTracks[0]][rNPtAssoc3[rGoodTracks[0]]]=apt3;
1438 rNPtAssoc3[rGoodTracks[0]]++;
1439 }
1440 }
1441 rGoodTracks[0]++;
1442 }
1443
1444
1445 }//njet
1446
1447 return lead;
1448}
1449
1450
3b7aa4ba 1451//------------------------------------------------------------
1452void AliAnalysisTaskDiHadron::Exec(Option_t *)
1453{
69088c96 1454 //Main executable
1455 if(fDEBUG)Printf("Exec");
3b7aa4ba 1456
69088c96 1457 const int nTPtBins=fNTPtBins;
1458 const int nCentBins=fNCentBins;
3b7aa4ba 1459 for(int ievent=0;ievent<=1;ievent++){
1460
d514944f 1461 if((!fESD&&!fAOD)&&ievent==0){
1462 if(fDEBUG)Printf("Error: fESD not found");
3b7aa4ba 1463 break;
1464 }
d514944f 1465 if(!fMC&&ievent==1){
3b7aa4ba 1466 break;
1467 }
d514944f 1468 // Printf("fSimulate %d",fSimulate);
1469 if(fSimulate==1&&ievent==1) break;
1470 if(ievent==1&&!fMCHistos)break;//break out if MC event and we don't have fill of those set
1471 //Secondary check
1472 if(ievent==0){
1473 if(!fAODData){
1474 if(fESD->GetNumberOfTracks()<=0){
1475 if(fDEBUG)Printf("Error: no tracks");
1476 break;
1477 }
1478 }
1479 else{
1480 if(fAOD->GetNTracks()<=0){
1481 if(fDEBUG)Printf("Error: no tracks");
1482 break;
1483 }
1484 }
1485 }
1486 //The previous check doesn't seem to work as a fMC is bad not NULL
1487 if(ievent==1){
1488 if(fMC->GetNumberOfTracks()<=0){
1489 if(fDEBUG)Printf("<=0 MCTracks");
1490 break;
1491 }
3b7aa4ba 1492 }
3b7aa4ba 1493
d514944f 1494 //Check for Trigger only on real data
1495 if(!fMC){
1496 if(!fAODData){
1497 if(!CheckTrigger(fESD)) break;
1498 }
1499 else{
1500 if(!CheckTriggerAOD(fAOD)) break;
1501 }
3b7aa4ba 1502 }
3b7aa4ba 1503
d514944f 1504 //I'll only cut on the reconstructed vertex since these are the events that will be used
1505 int vertexBin;
1506 if(!fAODData)vertexBin=CheckVertex(fESD);
1507 else vertexBin=CheckVertexAOD(fAOD);
1508 if(vertexBin<0)break;
1509
1510
1511
1512 Int_t nGoodTracks[2]={0,0}, nTriggers[nTPtBins][nCentBins][2];
1513 Int_t nTrack;
1514 if(!ievent){
1515 if(!fAODData)nTrack=fESD->GetNumberOfTracks();
1516 else nTrack=fAOD->GetNumberOfTracks();
1517 }
1518 else nTrack=fMC->Stack()->GetNtrack();
1519 if(fSimulate)nTrack=10*(fSimNBgPart+10*fSimNJetPart);
1520 gRandom->SetSeed(time(0)+gSystem->GetPid());
1521 Float_t tdPhi, tdEta, tXE;
1522 Float_t tdPhi2, tdEta2;
1523 Float_t V2_T1, V2_T2, V3_T1, V3_T2, V4_T1, V4_T2, V42_T12, V42_1T2, V42_2T1, V2V2V4, V2, V3, V4;
1524 Float_t V2_A, V3_A, V4_A;
1525 ftPhi=new Float_t [nTrack];
1526 ftEta=new Float_t [nTrack];
1527 ftPt=new Float_t [nTrack];
1528 ftCharge=new Short_t [nTrack];
1529 ftEff=new Float_t [nTrack];
1530 ftV2=new Float_t [nTrack];
1531 ftV3=new Float_t [nTrack];
1532 ftV4=new Float_t [nTrack];
1533 ftPtAssoc3=new Int_t *[nTrack];
1534 for(int i=0;i<nTrack;i++){
1535 ftPtAssoc3[i]=new Int_t [10];
3b7aa4ba 1536 }
d514944f 1537 ftNPtAssoc3=new Int_t [nTrack];
1538 Short_t sign;
1539 //trigger particle arrays
3b7aa4ba 1540 for(int i=0;i<fNTPtBins;i++){
d514944f 1541 for(int c=0;c<fNCentBins;c++){
1542 nTriggers[i][c][ievent]=0;
1543 }
1544 }
1545 //Int_t tMult=fESD->GetMultiplicity()->GetNumberOfTracklets();//I think this is the correct multiplicity to use
1546
1547 //AliESDVZERO* esdV0 = fESD->GetVZEROData();
1548 Float_t tMult=0;
1549 if(!fAODData){
1550 if(fCentPercent) tMult=fESD->GetCentrality()->GetCentralityPercentile("V0M");
1551 else tMult=fESD->GetVZEROData()->GetMTotV0A()+fESD->GetVZEROData()->GetMTotV0C();
1552 }
1553 else{
1554 AliAODHeader *tHeader=fAOD->GetHeader();
1555 tMult=tHeader->GetCentrality();
1556 }
1557
1558 if(fDEBUG)Printf("Mult/Cent%6.1f",tMult);
1559
1560 //Decide what multiplicy bins are filled with this event, note set to max of 4 overlapping bins as I didn't think more then 2 overlapping bins likely at one time, easliy changed
1561 Int_t multArray[4]={0,0,0,0};
1562 Int_t maxArray=0;
1563
1564 for(int imult=0;imult<fNCentBins;imult++){
1565 if(tMult>=fCentArrayMin[imult]&&tMult<fCentArrayMax[imult]){
1566 multArray[maxArray]=imult;
1567 maxArray++;
1568 }
1569 }
1570 if(maxArray==0)break;
1571 //Printf("maxArray%d Mult%1.2f",maxArray,tMult);
1572 if(fDEBUG)Printf("maxArray%d",maxArray);
1573 //Set Efficiency and flow for the centrality bin (lowest bin used in array if multiple overlap)
1574 for(int ipar=0;ipar<fNFitLowParam;ipar++){
1575 fFitLow->SetParameter(ipar,fFitLowParam[multArray[0]*fNFitLowParam+ipar]);
1576 }
1577 for(int ipar=0;ipar<fNFitHighParam;ipar++){
1578 fFitHigh->SetParameter(ipar,fFitHighParam[multArray[0]*fNFitHighParam+ipar]);
1579 }
1580 for(int ipar=0;ipar<fNFitLowParamV2;ipar++){
1581 fFitLowV2->SetParameter(ipar,fFitLowParamV2[multArray[0]*fNFitLowParamV2+ipar]);
1582 }
1583 for(int ipar=0;ipar<fNFitHighParamV2;ipar++){
1584 fFitHighV2->SetParameter(ipar,fFitHighParamV2[multArray[0]*fNFitHighParamV2+ipar]);
1585 }
1586 for(int ipar=0;ipar<fNFitLowParamV3;ipar++){
1587 fFitLowV3->SetParameter(ipar,fFitLowParamV3[multArray[0]*fNFitLowParamV3+ipar]);
1588 }
1589 for(int ipar=0;ipar<fNFitHighParamV3;ipar++){
1590 fFitHighV3->SetParameter(ipar,fFitHighParamV3[multArray[0]*fNFitHighParamV2+ipar]);
1591 }
1592 for(int ipar=0;ipar<fNFitLowParamV4;ipar++){
1593 fFitLowV4->SetParameter(ipar,fFitLowParamV4[multArray[0]*fNFitLowParamV4+ipar]);
1594 }
1595 for(int ipar=0;ipar<fNFitHighParamV4;ipar++){
1596 fFitHighV4->SetParameter(ipar,fFitHighParamV4[multArray[0]*fNFitHighParamV4+ipar]);
1597 }
1598 fHistMult[ievent]->Fill(tMult);
1599 for(int c=0;c<maxArray;c++){fHistNEvents[multArray[c]][ievent]->Fill(0);}//count the number of events used
1600 Int_t leadPart=-1;
1601
1602 //returns arrays filled up to nGoodTracks with tracks passing cuts
1603 for(int nSimEvents=0;nSimEvents<=(fSimulate*fSimNEvents);nSimEvents++){//only 1 loop if not simulation
1604 //Printf("nSimEvents %d",nSimEvents);
1605 if(fSimulate)leadPart=TrackCutsSim(ftPt,ftEta,ftPhi,ftCharge,ftEff,ftV2,ftV3,ftV4,ftPtAssoc3,ftNPtAssoc3,nGoodTracks);
1606 else if(!ievent){
1607 if(!fAODData)leadPart=TrackCuts(fESD,ftPt,ftEta,ftPhi,ftCharge,ftEff,ftV2,ftV3,ftV4,ftPtAssoc3,ftNPtAssoc3,nGoodTracks);
1608 else leadPart=TrackCutsAOD(fAOD,ftPt,ftEta,ftPhi,ftCharge,ftEff,ftV2,ftV3,ftV4,ftPtAssoc3,ftNPtAssoc3,nGoodTracks);
1609 }
1610 else leadPart=TrackCutsMC(fMC,ftPt,ftEta,ftPhi,ftCharge,ftEff,ftV2,ftV3,ftV4,ftPtAssoc3,ftNPtAssoc3,nGoodTracks);
1611 //Printf("nGoodTracks %d",nGoodTracks[0]);
1612 int nearEta=0,NearXE=0;
1613 int nearEta2=0;
1614
1615 if(fDEBUG)Printf("Track Loop");
1616 for(int iTrack=0;iTrack<nGoodTracks[ievent];iTrack++){
1617 if(fDEBUG)Printf("Track%d Pt%f",iTrack,ftPt[iTrack]);
1618 //if(ftPhi[iTrack]<fdPhiMin)ftPhi[iTrack]+=2*fPi;
1619 //if(ftPhi[iTrack]>fdPhiMax)ftPhi[iTrack]-=2*fPi;
69088c96 1620 for(int c=0;c<maxArray;c++){
d514944f 1621 // Printf("c%d mult%d",c,multArray[c]);
1622 fHistPt[multArray[c]][ievent]->Fill(ftPt[iTrack],ftEff[iTrack]);
1623 fHistPtEff[multArray[c]][ievent]->Fill(ftPt[iTrack]);
1624 fHistPhi[multArray[c]][ievent]->Fill(ftPhi[iTrack],ftPt[iTrack],ftEff[iTrack]);
1625 fHistPhiPt[multArray[c]][ievent]->Fill(ftPhi[iTrack],ftPt[iTrack],ftPt[iTrack]*ftEff[iTrack]);
1626 fHistEta[multArray[c]][ievent]->Fill(ftEta[iTrack],ftPt[iTrack],ftEff[iTrack]);
1627 fHistEtaPt[multArray[c]][ievent]->Fill(ftEta[iTrack],ftPt[iTrack],ftPt[iTrack]*ftEff[iTrack]);
1628 fHistPhiEta[multArray[c]][ievent]->Fill(ftPhi[iTrack],ftEta[iTrack],ftPt[iTrack],ftEff[iTrack]);
1629 fHistPhiEtaPt[multArray[c]][ievent]->Fill(ftPhi[iTrack],ftEta[iTrack],ftPt[iTrack],ftPt[iTrack]*ftEff[iTrack]);
3b7aa4ba 1630 }
d514944f 1631 for(int i=0;i<fNTPtBins;i++){
1632 if(ftPt[iTrack]>fPtTrigArray[i]&&ftPt[iTrack]<=fPtTrigArray[i+1]&&fabs(ftEta[iTrack])<fTrigEtaCut){
1633 if(fDEBUG)Printf("In %fpt%f",fPtTrigArray[i],fPtTrigArray[i+1]);
1634 fHistMultTrig[i][ievent]->Fill(tMult);
1635 for(int c=0;c<maxArray;c++){
1636 nTriggers[i][multArray[c]][ievent]++;
1637 fHistNTrigger[multArray[c]][ievent]->Fill(i,ftEff[iTrack]);
1638 fHistNTriggerPt[multArray[c]][ievent]->Fill(i,ftPt[iTrack]*ftEff[iTrack]);
3b7aa4ba 1639 }
d514944f 1640
1641 if(fDEBUG)Printf("Assiciated Particle Loop");
1642 // Printf("GoodTracks %d Cent%d",nGoodTracks[ievent],multArray[0]);
1643 for(int iTrack2=0;iTrack2<nGoodTracks[ievent];iTrack2++){
1644 if(iTrack==iTrack2) continue;
1645 if(ftPt[iTrack2]>ftPt[iTrack])continue;
1646 tdPhi=ftPhi[iTrack]-ftPhi[iTrack2];
1647 if(tdPhi<-fPi)tdPhi+=2*fPi;
1648 if(tdPhi>fPi)tdPhi-=2*fPi;
1649 if(fabs(tdPhi)<fNearPhiCut)nearEta=1;
1650 else nearEta=0;
1651 if(fabs(tdPhi)<fXECut)NearXE=1;
1652 else NearXE=0;
1653 if(fabs(tdPhi)<(fPi/2))tdEta=ftEta[iTrack]-ftEta[iTrack2];
1654 else tdEta=ftEta[iTrack]+ftEta[iTrack2];
1655 if(tdPhi<fdPhiMin)tdPhi+=2*fPi;
1656 if(tdPhi>fdPhiMax)tdPhi-=2*fPi;
1657 if((ftCharge[iTrack]<0&&ftCharge[iTrack2]<0)||(ftCharge[iTrack]>0&&ftCharge[iTrack2]>0))sign=1;
1658 else sign=2;
1659 if(fDEBUG) Printf("dPhi %f dEta %f",tdPhi,tdEta);
1660 for(int c=0;c<maxArray;c++){//loop over multiplicity bins
1661 fHistPtTrig[i][multArray[c]][ievent]->Fill(ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1662 fHistPhiTrig[i][multArray[c]][ievent]->Fill(ftPhi[iTrack2],ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1663 fHistPhiTrigPt[i][multArray[c]][ievent]->Fill(ftPhi[iTrack2],ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1664 fHistEtaTrig[i][multArray[c]][ievent]->Fill(ftEta[iTrack2],ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1665 fHistEtaTrigPt[i][multArray[c]][ievent]->Fill(ftEta[iTrack2],ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1666
1667 fHistPhiEtaTrig[i][multArray[c]][ievent]->Fill(ftPhi[iTrack2],ftEta[iTrack2],ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1668 fHistPhiEtaTrigPt[i][multArray[c]][ievent]->Fill(ftPhi[iTrack2],ftEta[iTrack2],ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1669 fHistDeltaPhi[i][multArray[c]][0][ievent]->Fill(tdPhi,ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1670 fHistDeltaPhiPt[i][multArray[c]][0][ievent]->Fill(tdPhi,ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1671 fHistDeltaPhi[i][multArray[c]][sign][ievent]->Fill(tdPhi,ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1672 fHistDeltaPhiPt[i][multArray[c]][sign][ievent]->Fill(tdPhi,ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1673
69088c96 1674 if(nearEta){
d514944f 1675 fHistDeltaEtaN[i][multArray[c]][0][ievent]->Fill(tdEta,ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1676 fHistDeltaEtaNPt[i][multArray[c]][0][ievent]->Fill(tdEta,ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1677 fHistDeltaEtaN[i][multArray[c]][sign][ievent]->Fill(tdEta,ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1678 fHistDeltaEtaNPt[i][multArray[c]][sign][ievent]->Fill(tdEta,ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
3b7aa4ba 1679 }
1680 else{
d514944f 1681 fHistDeltaEtaA[i][multArray[c]][0][ievent]->Fill(tdEta,ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1682 fHistDeltaEtaAPt[i][multArray[c]][0][ievent]->Fill(tdEta,ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1683 fHistDeltaEtaA[i][multArray[c]][sign][ievent]->Fill(tdEta,ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1684 fHistDeltaEtaAPt[i][multArray[c]][sign][ievent]->Fill(tdEta,ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1685 }
1686 fHistDeltaPhiEta[i][multArray[c]][ievent]->Fill(tdPhi,tdEta,ftPt[iTrack2],ftEff[iTrack2]*ftEff[iTrack]);
1687 fHistDeltaPhiEtaPt[i][multArray[c]][ievent]->Fill(tdPhi,tdEta,ftPt[iTrack2],ftPt[iTrack2]*ftEff[iTrack2]*ftEff[iTrack]);
1688
1689 //only fill these if trigger particle is the leading particle
69088c96 1690 if(iTrack==leadPart){
3b7aa4ba 1691 if(NearXE){
d514944f 1692 tXE=ftPt[iTrack2]*cos(tdPhi)/ftPt[iTrack];
1693 fHistXEN[i][multArray[c]][ievent]->Fill(tXE,ftEff[iTrack2]*ftEff[iTrack]);
3b7aa4ba 1694 }
1695 else{
d514944f 1696 tXE=ftPt[iTrack2]*cos(tdPhi+fPi)/ftPt[iTrack];
1697 fHistXEA[i][multArray[c]][ievent]->Fill(tXE,ftEff[iTrack2]*ftEff[iTrack]);
3b7aa4ba 1698 }
1699 }
d514944f 1700
1701 }//Centrality loop (c)
1702
1703 //3-particle Correlations
1704 for(int iTrack3=0;iTrack3<nGoodTracks[ievent];iTrack3++){
1705 if(iTrack2==iTrack3)continue;
1706 if(ftPt[iTrack3]>ftPt[iTrack])continue;
1707 tdPhi2=ftPhi[iTrack]-ftPhi[iTrack3];
3b7aa4ba 1708 if(tdPhi2<-fPi)tdPhi2+=2*fPi;
1709 if(tdPhi2>fPi)tdPhi2-=2*fPi;
d514944f 1710 if(fabs(tdPhi2)<fNearPhiCut&&nearEta==1)nearEta2=1;
69088c96 1711 else nearEta2=0;
d514944f 1712 //if(fabs(tdPhi)<fXECut)NearXE=1;
1713 //else NearXE=0;
1714 if(fabs(tdPhi2)<(fPi/2))tdEta2=ftEta[iTrack]-ftEta[iTrack3];
1715 else tdEta2=ftEta[iTrack]+ftEta[iTrack3];
1716 if(tdPhi2<fdPhiMin)tdPhi2+=2*fPi;
3b7aa4ba 1717 if(tdPhi2>fdPhiMax)tdPhi2-=2*fPi;
d514944f 1718 // if((ftCharge[iTrack]<0&&ftCharge[iTrack2]<0)||(ftCharge[iTrack]>0&&ftCharge[iTrack2]>0))sign=1;
1719 if((ftCharge[iTrack]<0&&ftCharge[iTrack2]<0&&ftCharge[iTrack3]<0)||(ftCharge[iTrack]>0&&ftCharge[iTrack2]>0&&ftCharge[iTrack3]>0))sign=1;
1720 else if((ftCharge[iTrack3]<0&&ftCharge[iTrack2]<0)||(ftCharge[iTrack3]>0&&ftCharge[iTrack2]>0))sign=2;
69088c96 1721 else sign=3;
d514944f 1722 for(int e=0;e<ftNPtAssoc3[iTrack2];e++){//check associated pT bin
1723 for(int f=0;f<ftNPtAssoc3[iTrack3];f++){
1724 if(ftPtAssoc3[iTrack2][e]==ftPtAssoc3[iTrack3][f]){
1725 for(int c=0;c<maxArray;c++){//loop over multiplicity bins
1726 fHistDeltaPhiPhi[i][ftPtAssoc3[iTrack2][e]][multArray[c]][0][ievent]->Fill(tdPhi,tdPhi2,ftEff[iTrack2]*ftEff[iTrack3]*ftEff[iTrack]);
1727 fHistDeltaPhiPhi[i][ftPtAssoc3[iTrack2][e]][multArray[c]][sign][ievent]->Fill(tdPhi2,tdPhi,ftEff[iTrack2]*ftEff[iTrack3]*ftEff[iTrack]);
1728
1729
1730 if(nearEta2){
1731 fHistDeltaEtaEta[i][ftPtAssoc3[iTrack2][e]][multArray[c]][0][ievent]->Fill(tdEta,tdEta2,ftEff[iTrack2]*ftEff[iTrack3]*ftEff[iTrack]);
1732 fHistDeltaEtaEta[i][ftPtAssoc3[iTrack2][e]][multArray[c]][sign][ievent]->Fill(tdEta,tdEta2,ftEff[iTrack2]*ftEff[iTrack3]*ftEff[iTrack]);
1733 }
1734 }//multiplicity loop (c)
3b7aa4ba 1735 }
1736 }
d514944f 1737 }//track checking loops
1738 }//iTrack3
1739 }//iTrack2 (associated track loop)
1740
1741 if(fDEBUG)Printf("Mixed Event Loop");
1742 for(int c=0;c<maxArray;c++){
1743 //Printf("c%d mult%d",c,multArray[c]);
1744 int d=multArray[c];//Centrality bin we are in
1745 if(fMixEnd[d][vertexBin][ievent]>2){//check if there are any mixed events for this bin, require 2 for soft-soft mixing
1746 for(int imix=0;imix<fMixEnd[d][vertexBin][ievent];imix++){//loop over the stored mixed events
1747 fHistNMix[d][ievent]->Fill(i);
1748 //Printf("GoodTracksMixed %d Cent%d fMixEnd%d",fMixTrack[imix][d][vertexBin][ievent],d,fMixEnd[d][vertexBin][ievent]);
1749 for(int iTrack2=0;iTrack2<fMixTrack[imix][d][vertexBin][ievent];iTrack2++){
1750 if(ftPt[iTrack]<fMPt[imix][d][vertexBin][ievent][iTrack2])continue;
1751 tdPhi=ftPhi[iTrack]-fMPhi[imix][d][vertexBin][ievent][iTrack2];
1752 if(tdPhi<-fPi)tdPhi+=2*fPi;
1753 if(tdPhi>fPi)tdPhi-=2*fPi;
1754 if(fabs(tdPhi)<fNearPhiCut)nearEta=1;
1755 else nearEta=0;
1756 if(fabs(tdPhi)<fXECut)NearXE=1;
1757 else NearXE=0;
1758 if(fabs(tdPhi)<(fPi/2))tdEta=ftEta[iTrack]-fMEta[imix][d][vertexBin][ievent][iTrack2];
1759 else tdEta=ftEta[iTrack]+fMEta[imix][d][vertexBin][ievent][iTrack2];
1760 if(tdPhi<fdPhiMin)tdPhi+=2*fPi;
1761 if(tdPhi>fdPhiMax)tdPhi-=2*fPi;
1762 if((ftCharge[iTrack]<0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]<0)||(ftCharge[iTrack]>0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]>0))sign=1;
1763 else sign=2;
1764 V2_T1=2*fMV2[imix][d][vertexBin][ievent][iTrack2]*ftV2[iTrack]*cos(2*tdPhi);
1765 V3_T1=2*fMV3[imix][d][vertexBin][ievent][iTrack2]*ftV3[iTrack]*cos(3*tdPhi);
1766 V4_T1=2*fMV4[imix][d][vertexBin][ievent][iTrack2]*ftV4[iTrack]*cos(4*tdPhi);
1767
1768 fHistDeltaPhiMix[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]);
1769 fHistDeltaPhiMixV2[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1);
1770 fHistDeltaPhiMixV3[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1);
1771 fHistDeltaPhiMixV4[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1);
1772 fHistDeltaPhiMixPt[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMPt[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack2]);
1773 fHistDeltaPhiMixV2Pt[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1774 fHistDeltaPhiMixV3Pt[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1775 fHistDeltaPhiMixV4Pt[i][d][0][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1776 fHistDeltaPhiMix[i][d][sign][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]);
1777 fHistDeltaPhiMixV2[i][d][sign][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1);
1778 fHistDeltaPhiMixV3[i][d][sign][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1);
1779 fHistDeltaPhiMixV4[i][d][sign][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1);
1780 fHistDeltaPhiMixPt[i][d][sign][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMPt[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack2]);
1781 fHistDeltaPhiMixV2Pt[i][d][sign][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1782 fHistDeltaPhiMixV3Pt[i][d][sign][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1783 fHistDeltaPhiMixV4Pt[i][d][sign][ievent]->Fill(tdPhi,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1784
1785 if(nearEta){
1786 fHistDeltaEtaNMix[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]);
1787 fHistDeltaEtaNMixV2[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1);
1788 fHistDeltaEtaNMixV3[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1);
1789 fHistDeltaEtaNMixV4[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1);
1790 fHistDeltaEtaNMixPt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMPt[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack2]);
1791 fHistDeltaEtaNMix[i][d][sign][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]);
1792 fHistDeltaEtaNMixPt[i][d][sign][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMPt[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack2]);
1793 fHistDeltaEtaNMixV2Pt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1794 fHistDeltaEtaNMixV3Pt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1795 fHistDeltaEtaNMixV4Pt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1796 }
1797 else{
1798 fHistDeltaEtaAMix[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]);
1799 fHistDeltaEtaAMixV2[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1);
1800 fHistDeltaEtaAMixV3[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1);
1801 fHistDeltaEtaAMixV4[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1);
1802 fHistDeltaEtaAMixPt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMPt[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack2]);
1803 fHistDeltaEtaAMix[i][d][sign][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]);
1804 fHistDeltaEtaAMixPt[i][d][sign][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMPt[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack2]);
1805 fHistDeltaEtaAMixV2Pt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1806 fHistDeltaEtaAMixV3Pt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1807 fHistDeltaEtaAMixV4Pt[i][d][0][ievent]->Fill(tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1*fMPt[imix][d][vertexBin][ievent][iTrack2]);
1808 }
1809
1810 fHistDeltaPhiEtaMix[i][d][ievent]->Fill(tdPhi,tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]);
1811 fHistDeltaPhiEtaMixV2[i][d][ievent]->Fill(tdPhi,tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V2_T1);
1812 fHistDeltaPhiEtaMixV3[i][d][ievent]->Fill(tdPhi,tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V3_T1);
1813 fHistDeltaPhiEtaMixV4[i][d][ievent]->Fill(tdPhi,tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMEff[imix][d][vertexBin][ievent][iTrack2]*V4_T1);
1814 fHistDeltaPhiEtaMixPt[i][d][ievent]->Fill(tdPhi,tdEta,fMPt[imix][d][vertexBin][ievent][iTrack2],fMPt[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack2]);
1815
1816 if(iTrack==leadPart){
1817 if(NearXE){
1818 tXE=fMPt[imix][d][vertexBin][ievent][iTrack2]*cos(tdPhi)/ftPt[iTrack];
1819 fHistXENMix[i][d][ievent]->Fill(tXE,fMEff[imix][d][vertexBin][ievent][iTrack2]);
3b7aa4ba 1820 }
d514944f 1821 else{
1822 tXE=fMPt[imix][d][vertexBin][ievent][iTrack2]*cos(tdPhi+fPi)/ftPt[iTrack];
1823 fHistXEAMix[i][multArray[c]][ievent]->Fill(tXE,fMEff[imix][d][vertexBin][ievent][iTrack2]);
1824 }
1825 }
1826
1827 //3-particle correlation soft-soft term (both associated from the same event)
1828 for(int iTrack3=0;iTrack3<fMixTrack[imix][d][vertexBin][ievent];iTrack3++){
1829 if(iTrack3==iTrack2)continue;
1830 if(ftPt[iTrack]<fMPt[imix][d][vertexBin][ievent][iTrack3])continue;
1831 tdPhi2=ftPhi[iTrack]-fMPhi[imix][d][vertexBin][ievent][iTrack3];
1832 if(tdPhi2<-fPi)tdPhi2+=2*fPi;
1833 if(tdPhi2>fPi)tdPhi2-=2*fPi;
1834 if(fabs(tdPhi2)<fNearPhiCut&&nearEta)nearEta2=1;
1835 else nearEta2=0;
1836 if(fabs(tdPhi2)<(fPi/2))tdEta2=ftEta[iTrack]-fMEta[imix][d][vertexBin][ievent][iTrack3];
1837 else tdEta2=ftEta[iTrack]+fMEta[imix][d][vertexBin][ievent][iTrack3];
1838 if(tdPhi2<fdPhiMin)tdPhi2+=2*fPi;
1839 if(tdPhi2>fdPhiMax)tdPhi2-=2*fPi;
1840
1841 if((ftCharge[iTrack]<0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]<0&&fMCharge[imix][d][vertexBin][ievent][iTrack3]<0)||(ftCharge[iTrack]>0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]>0&&fMCharge[imix][d][vertexBin][ievent][iTrack3]>0))sign=1;
1842 else if((fMCharge[imix][d][vertexBin][ievent][iTrack3]<0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]<0)||(fMCharge[imix][d][vertexBin][ievent][iTrack3]>0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]>0))sign=2;
1843 else sign=3;
1844 for(int e=0;e<fMNPtAssoc3[imix][d][vertexBin][ievent][iTrack2];e++){//check associated pT bin
1845 for(int f=0;f<fMNPtAssoc3[imix][d][vertexBin][ievent][iTrack3];f++){
1846 if(fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]==fMPtAssoc3[imix][d][vertexBin][ievent][f][iTrack3]){
1847 fHistDeltaPhiPhiSS[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack3]);
1848 fHistDeltaPhiPhiSS[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack3]);
1849
1850 if(nearEta2){
1851 fHistDeltaEtaEtaSS[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack3]);
1852 fHistDeltaEtaEtaSS[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix][d][vertexBin][ievent][iTrack3]);
1853 }//near-side
1854 }
1855 }
1856 }//associated pt bin
1857 }//iTrack3
1858
1859 //3-particle mixed event (associated from different events)
1860 int imix2=imix+1;
1861 if(imix2>=fMixEnd[d][vertexBin][ievent])imix2=0;
1862 if(imix2==imix)continue;
1863 for(int iTrack3=0;iTrack3<fMixTrack[imix2][d][vertexBin][ievent];iTrack3++){
1864 if(ftPt[iTrack]<fMPt[imix2][d][vertexBin][ievent][iTrack3])continue;
1865 tdPhi2=ftPhi[iTrack]-fMPhi[imix2][d][vertexBin][ievent][iTrack3];
1866 if(tdPhi2<-fPi)tdPhi2+=2*fPi;
1867 if(tdPhi2>fPi)tdPhi2-=2*fPi;
1868 if(fabs(tdPhi2)<fNearPhiCut&&nearEta)nearEta2=1;
1869 else nearEta2=0;
1870 if(fabs(tdPhi2)<(fPi/2))tdEta2=ftEta[iTrack]-fMEta[imix2][d][vertexBin][ievent][iTrack3];
1871 else tdEta2=ftEta[iTrack]+fMEta[imix2][d][vertexBin][ievent][iTrack3];
1872 if(tdPhi2<fdPhiMin)tdPhi2+=2*fPi;
1873 if(tdPhi2>fdPhiMax)tdPhi2-=2*fPi;
1874 V2_T2=2*ftV2[iTrack]*fMV2[imix2][d][vertexBin][ievent][iTrack3]*cos(2*tdPhi2);
1875 V3_T2=2*ftV3[iTrack]*fMV3[imix2][d][vertexBin][ievent][iTrack3]*cos(3*tdPhi2);
1876 V4_T2=2*ftV4[iTrack]*fMV4[imix2][d][vertexBin][ievent][iTrack3]*cos(4*tdPhi2);
1877 V42_T12=2*ftV4[iTrack]*fMV2[imix2][d][vertexBin][ievent][iTrack3]*fMV2[imix][d][vertexBin][ievent][iTrack2]*cos(2*tdPhi+2*tdPhi2);
1878 V42_1T2=2*fMV4[imix][d][vertexBin][ievent][iTrack2]*ftV2[iTrack]*fMV2[imix2][d][vertexBin][ievent][iTrack3]*cos(4*tdPhi-2*tdPhi2);
1879 V42_2T1=2*fMV4[imix2][d][vertexBin][ievent][iTrack3]*ftV2[iTrack]*fMV2[imix][d][vertexBin][ievent][iTrack2]*cos(4*tdPhi2-2*tdPhi);
1880 V2_A=2*fMV2[imix2][d][vertexBin][ievent][iTrack3]*fMV2[imix][d][vertexBin][ievent][iTrack2]*cos(2*(tdPhi-tdPhi2));
1881 V3_A=2*fMV3[imix2][d][vertexBin][ievent][iTrack3]*fMV3[imix][d][vertexBin][ievent][iTrack2]*cos(3*(tdPhi-tdPhi2));
1882 V4_A=2*fMV4[imix2][d][vertexBin][ievent][iTrack3]*fMV4[imix][d][vertexBin][ievent][iTrack2]*cos(4*(tdPhi-tdPhi2));
1883
1884 V2=V2_T1+V2_T2;
1885 V3=V3_T1+V3_T2;
1886 V4=V4_T1+V4_T2;
1887 V2V2V4=V42_T12+V42_1T2+V42_2T1;
1888
1889 if((ftCharge[iTrack]<0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]<0&&fMCharge[imix2][d][vertexBin][ievent][iTrack3]<0)||(ftCharge[iTrack]>0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]>0&&fMCharge[imix2][d][vertexBin][ievent][iTrack3]>0))sign=1;
1890 else if((fMCharge[imix2][d][vertexBin][ievent][iTrack3]<0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]<0)||(fMCharge[imix2][d][vertexBin][ievent][iTrack3]>0&&fMCharge[imix][d][vertexBin][ievent][iTrack2]>0))sign=2;
1891 else sign=3;
1892 for(int e=0;e<fMNPtAssoc3[imix][d][vertexBin][ievent][iTrack2];e++){//check associated pT bin
1893 for(int f=0;f<fMNPtAssoc3[imix2][d][vertexBin][ievent][iTrack3];f++){
1894 if(fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]==fMPtAssoc3[imix2][d][vertexBin][ievent][f][iTrack3]){
1895 fHistDeltaPhiPhiMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);
1896 fHistDeltaPhiPhiMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);
1897 fHistDeltaPhiPhiMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);//free factor of 2 in statistics
1898 fHistDeltaPhiPhiMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);
1899 //v2
1900 fHistDeltaPhiPhiMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);
1901 fHistDeltaPhiPhiMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);
1902 fHistDeltaPhiPhiMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);//free factor of 2 in statistics
1903 fHistDeltaPhiPhiMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);
1904 fHistDeltaPhiPhiSSV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2_A);
1905 fHistDeltaPhiPhiSSV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2_A);
1906 //v3
1907 fHistDeltaPhiPhiMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);
1908 fHistDeltaPhiPhiMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);
1909 fHistDeltaPhiPhiMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);//free factor of 2 in statistics
1910 fHistDeltaPhiPhiMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);
1911 fHistDeltaPhiPhiSSV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3_A);
1912 fHistDeltaPhiPhiSSV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3_A);
1913 //v4
1914 fHistDeltaPhiPhiMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);
1915 fHistDeltaPhiPhiMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);
1916 fHistDeltaPhiPhiMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);//free factor of 2 in statistics
1917 fHistDeltaPhiPhiMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);
1918 fHistDeltaPhiPhiSSV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4_A);
1919 fHistDeltaPhiPhiSSV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4_A);
1920 //v2v2v4
1921 fHistDeltaPhiPhiMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);
1922 fHistDeltaPhiPhiMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi,tdPhi2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);
1923 fHistDeltaPhiPhiMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);//free factor of 2 in statistics
1924 fHistDeltaPhiPhiMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdPhi2,tdPhi,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);
1925
1926 if(nearEta2){
1927 fHistDeltaEtaEtaMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);
1928 fHistDeltaEtaEtaMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);
1929 fHistDeltaEtaEtaMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);
1930 fHistDeltaEtaEtaMix[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]);
1931 //v2
1932 fHistDeltaEtaEtaMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);
1933 fHistDeltaEtaEtaMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);
1934 fHistDeltaEtaEtaMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);
1935 fHistDeltaEtaEtaMixV2[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2);
1936 //v3
1937 fHistDeltaEtaEtaMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);
1938 fHistDeltaEtaEtaMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);
1939 fHistDeltaEtaEtaMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);
1940 fHistDeltaEtaEtaMixV3[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V3);
1941 //v4
1942 fHistDeltaEtaEtaMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);
1943 fHistDeltaEtaEtaMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);
1944 fHistDeltaEtaEtaMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);
1945 fHistDeltaEtaEtaMixV4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V4);
1946 //v2v2v4
1947 fHistDeltaEtaEtaMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);
1948 fHistDeltaEtaEtaMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta,tdEta2,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);
1949 fHistDeltaEtaEtaMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][0][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);
1950 fHistDeltaEtaEtaMixV2V2V4[i][fMPtAssoc3[imix][d][vertexBin][ievent][e][iTrack2]][d][sign][ievent]->Fill(tdEta2,tdEta,fMEff[imix][d][vertexBin][ievent][iTrack2]*fMEff[imix2][d][vertexBin][ievent][iTrack3]*V2V2V4);
1951
1952 }//near-side
1953 }
1954 }
1955 }//associated pt bin
1956 }//iTrack3
1957 }//iTrack2
1958 }//imix
1959 }//fMixEnd
1960 }//Centrality bins (c)
1961 }//pt trig cuts
1962 }//i Pt Trig
1963 }//itrack
3b7aa4ba 1964
d514944f 1965 //now store this event for mixing (using these dynamic arrays to save memory)
1966 if(fDEBUG)Printf("Store Event For Mixing");
1967 for(int c=0;c<maxArray;c++){//loops over centrality bins
1968 int d=multArray[c];//too many nested arrays looked confusing d=which centrality bin
1969 if(fMixEnd[d][vertexBin][ievent]<=fNMix)fMixEnd[d][vertexBin][ievent]++;
1970 if(fMixPointer[d][vertexBin][ievent]<(fNMix-1)&&fMixEnd[d][vertexBin][ievent]!=1)fMixPointer[d][vertexBin][ievent]++;
1971 else fMixPointer[d][vertexBin][ievent]=0;
1972 int e=fMixPointer[d][vertexBin][ievent];//nested arrays (e is event number in pool)
1973 delete [] fMPt[e][d][vertexBin][ievent];
1974 delete [] fMPhi[e][d][vertexBin][ievent];
1975 delete [] fMEta[e][d][vertexBin][ievent];
1976 delete [] fMCharge[e][d][vertexBin][ievent];
1977 delete [] fMEff[e][d][vertexBin][ievent];
1978 delete [] fMV2[e][d][vertexBin][ievent];
1979 delete [] fMV3[e][d][vertexBin][ievent];
1980 delete [] fMV4[e][d][vertexBin][ievent];
1981 delete [] fMNPtAssoc3[e][d][vertexBin][ievent];
1982 for(int jj=0;jj<10;jj++){
1983 delete [] fMPtAssoc3[e][d][vertexBin][ievent][jj];
1984 }
1985 fMPt[e][d][vertexBin][ievent]=new Float_t [nGoodTracks[ievent]];
1986 fMPhi[e][d][vertexBin][ievent]=new Float_t [nGoodTracks[ievent]];
1987 fMEta[e][d][vertexBin][ievent]=new Float_t [nGoodTracks[ievent]];
1988 fMCharge[e][d][vertexBin][ievent]=new Short_t [nGoodTracks[ievent]];
1989 fMEff[e][d][vertexBin][ievent]=new Float_t [nGoodTracks[ievent]];
1990 fMV2[e][d][vertexBin][ievent]=new Float_t [nGoodTracks[ievent]];
1991 fMV3[e][d][vertexBin][ievent]=new Float_t [nGoodTracks[ievent]];
1992 fMV4[e][d][vertexBin][ievent]=new Float_t [nGoodTracks[ievent]];
1993 fMixTrack[e][d][vertexBin][ievent]=nGoodTracks[ievent];
1994 fMNPtAssoc3[e][d][vertexBin][ievent]=new Short_t [nGoodTracks[ievent]];
1995 for(int jj=0;jj<10;jj++){
1996 fMPtAssoc3[e][d][vertexBin][ievent][jj]=new Short_t [nGoodTracks[ievent]];
1997 }
3b7aa4ba 1998
d514944f 1999 for(int iTrack=0;iTrack<nGoodTracks[ievent];iTrack++){
2000 fMPt[e][d][vertexBin][ievent][iTrack]=ftPt[iTrack];
2001 fMPhi[e][d][vertexBin][ievent][iTrack]=ftPhi[iTrack];
2002 fMEta[e][d][vertexBin][ievent][iTrack]=ftEta[iTrack];
2003 fMCharge[e][d][vertexBin][ievent][iTrack]=ftCharge[iTrack];
2004 fMEff[e][d][vertexBin][ievent][iTrack]=ftEff[iTrack];
2005 fMV2[e][d][vertexBin][ievent][iTrack]=ftV2[iTrack];
2006 fMV3[e][d][vertexBin][ievent][iTrack]=ftV3[iTrack];
2007 fMV4[e][d][vertexBin][ievent][iTrack]=ftV4[iTrack];
2008 fMNPtAssoc3[e][d][vertexBin][ievent][iTrack]=ftNPtAssoc3[iTrack];
2009 for(int jj=0;jj<ftNPtAssoc3[iTrack];jj++){
2010 fMPtAssoc3[e][d][vertexBin][ievent][jj][iTrack]=ftPtAssoc3[iTrack][jj];
2011 }
2012 }//iTracks
2013 }//Centrality (c)
2014 } //sim
2015 }//ievent
2016
3b7aa4ba 2017 //track=0;
2018 //track2=0;
d514944f 2019
3b7aa4ba 2020
2021 PostData(0, fOutput);
2022 //get rid of these arrays from memory
69088c96 2023 delete [] ftPhi;
2024 delete [] ftEta;
2025 delete [] ftPt;
2026 delete [] ftCharge;
2027 delete [] ftEff;
d514944f 2028 delete [] ftV2;
2029 delete [] ftV3;
2030 delete [] ftV4;
69088c96 2031 delete [] ftNPtAssoc3;
2032 delete [] ftPtAssoc3;
2033 ftPhi=NULL;
2034 ftEta=NULL;
2035 ftPt=NULL;
2036 ftCharge=NULL;
2037 ftEff=NULL;
d514944f 2038 ftV2=NULL;
2039 ftV3=NULL;
2040 ftV4=NULL;
69088c96 2041 ftNPtAssoc3=NULL;
2042 ftPtAssoc3=NULL;
3b7aa4ba 2043
d514944f 2044 }//Exec
3b7aa4ba 2045
2046//---------------------------------------------------
2047void AliAnalysisTaskDiHadron::Terminate(Option_t *){
69088c96 2048 //Terminates the code, frees up memory
3b7aa4ba 2049 for(int ii=0;ii<fNMix;ii++){
2050 for(int cc=0;cc<fNCentBins;cc++){
2051 for(int vtx=0;vtx<fNVertexBins;vtx++){
2052 for(int jj=0;jj<2;jj++){
2053 delete [] fMPt[ii][cc][vtx][jj];
2054 delete [] fMPhi[ii][cc][vtx][jj];
2055 delete [] fMEta[ii][cc][vtx][jj];
2056 delete [] fMCharge[ii][cc][vtx][jj];
2057 delete [] fMEff[ii][cc][vtx][jj];
d514944f 2058 delete [] fMV2[ii][cc][vtx][jj];
2059 delete [] fMV3[ii][cc][vtx][jj];
2060 delete [] fMV4[ii][cc][vtx][jj];
3b7aa4ba 2061 delete [] fMNPtAssoc3[ii][cc][vtx][jj];
2062 for(int qq=0;qq<10;qq++){
2063 delete [] fMPtAssoc3[ii][cc][vtx][jj][qq];
2064 fMPtAssoc3[ii][cc][vtx][jj][qq]=NULL;
2065 }
2066 fMPt[ii][cc][vtx][jj]=NULL;
2067 fMPhi[ii][cc][vtx][jj]=NULL;
2068 fMEta[ii][cc][vtx][jj]=NULL;
2069 fMCharge[ii][cc][vtx][jj]=NULL;
2070 fMEff[ii][cc][vtx][jj]=NULL;
d514944f 2071 fMV2[ii][cc][vtx][jj]=NULL;
2072 fMV3[ii][cc][vtx][jj]=NULL;
2073 fMV4[ii][cc][vtx][jj]=NULL;
3b7aa4ba 2074 fMNPtAssoc3[ii][cc][vtx][jj]=NULL;
2075
2076 }
2077 }
2078 }
2079 }
0f3a7491 2080 delete [] fFitLowParam;
2081 delete [] fFitHighParam;
2082 delete [] fPtTrigArray;
2083 delete [] fPtAssocArray;
2084 delete [] fPtAssoc3Array1;
2085 delete [] fPtAssoc3Array2;
2086 delete [] fCentArrayMin;
2087 delete [] fCentArrayMax;
2088 delete [] fXEArray;
2089 fFitLowParam=NULL;
2090 fFitHighParam=NULL;
2091 fPtTrigArray=NULL;
2092 fPtAssocArray=NULL;
2093 fPtAssoc3Array1=NULL;
2094 fPtAssoc3Array2=NULL;
2095 fCentArrayMin=NULL;
2096 fCentArrayMax=NULL;
3b7aa4ba 2097 Printf("Terminate AliAnalysisTaskDiHadron");
2098}