+AliHBTAnalysis* buildanalysis(Int_t pid1, Int_t pid2, Bool_t threeDcuts, Float_t qinvmax, const char* anasuffix)
+ {
+ /************************************************************/
+ /**** Q INV Correlation Function ************************/
+ /************************************************************/
+
+
+ AliHBTAnalysis * analysis = new AliHBTAnalysis();
+ analysis->SetBufferSize(1);
+
+
+ AliAODPairCut *paircut = new AliAODPairCut();
+
+ TString anasfx(anasuffix);
+
+ Float_t qinvmin = 0.0;
+ paircut->SetQInvRange(qinvmin,1.5*qinvmax);
+
+ TParticlePDG* pdg1 = TDatabasePDG::Instance()->GetParticle(pid1);
+ TString system = pdg1->GetName();
+ system+=" ";
+ if (pid2)
+ {
+ cout<<"Setting cuts on particles: "<<pid1<<" "<<pid2<<endl;
+ AliAODParticleCut* partcut = new AliAODParticleCut();
+ partcut->SetPID(pid1);
+ paircut->SetFirstPartCut(partcut);
+ partcut->SetPID(pid2);
+ paircut->SetSecondPartCut(partcut);
+ delete partcut;
+ TParticlePDG* pdg2 = TDatabasePDG::Instance()->GetParticle(pid2);
+ system+=pdg2->GetName();
+ }
+ else
+ {
+ system+=pdg1->GetName();
+ }
+ analysis->SetGlobalPairCut(paircut);
+ paircut->SetName("AnalysisGlobalPairCut");
+ paircut->Write();
+
+ cout<<"Building functions"<<endl;
+
+ /************************************************************/
+ /**** Q INV Correlation Function ************************/
+ /************************************************************/
+ //general cross check
+ AliHBTQInvCorrelFctn * qinvcfP = new AliHBTQInvCorrelFctn(1000,qinvmax);
+ qinvcfP->SetNumberOfBinsToScale(200);
+ qinvcfP->Rename("qinvcfP"+anasfx,"Particle (simulated) Q_{inv} Correlation Function "+ system + anasfx);
+ analysis->AddParticleFunction(qinvcfP);
+
+//===========================================================================================
+
+ AliHBTWeightTheorQInvFctn *wqinvcf = new AliHBTWeightTheorQInvFctn(1000,qinvmax);
+ wqinvcf->SetNumberOfBinsToScale(200);
+ wqinvcf->Rename("wqinvcf","Particle (simulated) Lednicky Q_{inv} Correlation Function "+system);
+ analysis->AddParticleFunction(wqinvcf);
+
+ AliHBTWeightTheorOSLFctn *wqoslcf = new AliHBTWeightTheorOSLFctn(60,qinvmax,0.0,60,qinvmax,0.0,60,qinvmax,0.0);
+ wqoslcf->Rename("wqoslcf","Particle (simulated) Lednicky OSL Theoret Correlation Function "+system);
+ wqoslcf->SetNumberOfBinsToScale(20,20,20);
+ analysis->AddParticleFunction(wqoslcf);
+
+//===========================================================================================
+ AliAODPairCut *cfPairCutKt = new AliAODPairCut();
+
+//===========================================================================================
+ cfPairCutKt->SetKtRange(0.0,0.2);
+
+ AliHBTWeightTheorQInvFctn *wqinvcfK11 = new AliHBTWeightTheorQInvFctn(1000,qinvmax);
+ wqinvcfK11->SetNumberOfBinsToScale(200);
+ wqinvcfK11->SetPairCut(cfPairCutKt);
+ wqinvcfK11->Rename("wqinvcfK11","Particle (simulated) Lednicky Q_{inv} Correlation Function 0.0<p_{t}<0.2 "+system);
+ analysis->AddParticleFunction(wqinvcfK11);
+
+ AliHBTWeightTheorOSLFctn *wqoslcfK11 = new AliHBTWeightTheorOSLFctn(60,qinvmax,0.0,60,qinvmax,0.0,60,qinvmax,0.0);
+ wqoslcfK11->Rename("wqoslcfK11","Particle (simulated) Lednicky OSL Theoret Correlation Function 0.0<p_{t}<0.2 "+system);
+ wqoslcfK11->SetNumberOfBinsToScale(20,20,20);
+ wqoslcfK11->SetPairCut(cfPairCutKt);
+ analysis->AddParticleFunction(wqoslcfK11);
+//===========================================================================================
+
+ cfPairCutKt->SetKtRange(0.2,0.4);
+
+ AliHBTWeightTheorQInvFctn *wqinvcfK12 = new AliHBTWeightTheorQInvFctn(1000,qinvmax);
+ wqinvcfK12->SetNumberOfBinsToScale(200);
+ wqinvcfK12->SetPairCut(cfPairCutKt);
+ wqinvcfK12->Rename("wqinvcfK12","Particle (simulated) Lednicky Q_{inv} Correlation Function 0.2<p_{t}<0.4 "+system);
+ analysis->AddParticleFunction(wqinvcfK12);
+
+ AliHBTWeightTheorOSLFctn *wqoslcfK12 = new AliHBTWeightTheorOSLFctn(60,qinvmax,0.0,60,qinvmax,0.0,60,qinvmax,0.0);
+ wqoslcfK12->Rename("wqoslcfK12","Particle (simulated) Lednicky OSL Theoret Correlation Function 0.2<p_{t}<0.4 "+system);
+ wqoslcfK12->SetNumberOfBinsToScale(20,20,20);
+ wqoslcfK12->SetPairCut(cfPairCutKt);
+ analysis->AddParticleFunction(wqoslcfK12);
+//===========================================================================================
+
+ cfPairCutKt->SetKtRange(0.4,0.6);
+
+ AliHBTWeightTheorQInvFctn *wqinvcfK21 = new AliHBTWeightTheorQInvFctn(1000,qinvmax);
+ wqinvcfK21->SetNumberOfBinsToScale(200);
+ wqinvcfK21->SetPairCut(cfPairCutKt);
+ wqinvcfK21->Rename("wqinvcfK21","Particle (simulated) Lednicky Q_{inv} Correlation Function 0.4<p_{t}<0.6 "+system);
+ analysis->AddParticleFunction(wqinvcfK21);
+
+ AliHBTWeightTheorOSLFctn *wqoslcfK21 = new AliHBTWeightTheorOSLFctn(60,qinvmax,0.0, 60,qinvmax,0.0, 60,qinvmax,0.0);
+ wqoslcfK21->Rename("wqoslcfK21","Particle (simulated) Lednicky OSL Theoret Correlation Function 0.4<p_{t}<0.6 "+system);
+ wqoslcfK21->SetNumberOfBinsToScale(20,20,20);
+ wqoslcfK21->SetPairCut(cfPairCutKt);
+ analysis->AddParticleFunction(wqoslcfK21);
+//===========================================================================================
+
+ cfPairCutKt->SetKtRange(0.6,0.8);
+
+ AliHBTWeightTheorQInvFctn *wqinvcfK22 = new AliHBTWeightTheorQInvFctn(1000,qinvmax);
+ wqinvcfK22->SetNumberOfBinsToScale(200);
+ wqinvcfK22->SetPairCut(cfPairCutKt);
+ wqinvcfK22->Rename("wqinvcfK22","Particle (simulated) Lednicky Q_{inv} Correlation Function 0.6<p_{t}<0.8 "+system);
+ analysis->AddParticleFunction(wqinvcfK22);
+
+ AliHBTWeightTheorOSLFctn *wqoslcfK22 = new AliHBTWeightTheorOSLFctn(60,qinvmax,0.0, 60,qinvmax,0.0, 60,qinvmax,0.0);
+ wqoslcfK22->Rename("wqoslcfK22","Particle (simulated) Lednicky OSL Theoret Correlation Function 0.6<p_{t}<0.8 "+system);
+ wqoslcfK22->SetNumberOfBinsToScale(20,20,20);
+ wqoslcfK22->SetPairCut(cfPairCutKt);
+ analysis->AddParticleFunction(wqoslcfK22);
+//===========================================================================================
+
+ cfPairCutKt->SetKtRange(0.8,1.2);
+
+ AliHBTWeightTheorQInvFctn *wqinvcfK3 = new AliHBTWeightTheorQInvFctn(1000,qinvmax);
+ wqinvcfK3->SetNumberOfBinsToScale(200);
+ wqinvcfK3->SetPairCut(cfPairCutKt);
+ wqinvcfK3->Rename("wqinvcfK3","Particle (simulated) Lednicky Q_{inv} Correlation Function 0.8<p_{t}<1.2 "+system);
+ analysis->AddParticleFunction(wqinvcfK3);
+
+ AliHBTWeightTheorOSLFctn *wqoslcfK3 = new AliHBTWeightTheorOSLFctn(60,qinvmax,0.0, 60,qinvmax,0.0, 60,qinvmax,0.0);
+ wqoslcfK3->Rename("wqoslcfK3","Particle (simulated) Lednicky OSL Theoret Correlation Function 0.8<p_{t}<1.2 "+system);
+ wqoslcfK3->SetNumberOfBinsToScale(20,20,20);
+ wqoslcfK3->SetPairCut(cfPairCutKt);
+ analysis->AddParticleFunction(wqoslcfK3);
+//===========================================================================================
+
+ cfPairCutKt->SetKtRange(1.2,100000.);
+
+ AliHBTWeightTheorQInvFctn *wqinvcfK4 = new AliHBTWeightTheorQInvFctn(1000,qinvmax);
+ wqinvcfK4->SetNumberOfBinsToScale(200);
+ wqinvcfK4->SetPairCut(cfPairCutKt);
+ wqinvcfK4->Rename("wqinvcfK4","Particle (simulated) Lednicky Q_{inv} Correlation Function 1.2<p_{t} "+system);
+ analysis->AddParticleFunction(wqinvcfK4);
+
+ AliHBTWeightTheorOSLFctn *wqoslcfK4 = new AliHBTWeightTheorOSLFctn(60,qinvmax,0.0, 60,qinvmax,0.0, 60,qinvmax,0.0);
+ wqoslcfK4->Rename("wqoslcfK4","Particle (simulated) Lednicky OSL Theoret Correlation Function 1.2<p_{t} "+system);
+ wqoslcfK4->SetNumberOfBinsToScale(20,20,20);
+ wqoslcfK4->SetPairCut(cfPairCutKt);
+ analysis->AddParticleFunction(wqoslcfK4);
+//===========================================================================================
+
+
+ AliHBTMonVyDistributionVsVxFctn* vydistrvsvx = new AliHBTMonVyDistributionVsVxFctn(800,1.0e-11,-1.0e-11,800,1.0e-11,-1.0e-11);
+ AliHBTMonRtDistributionVsVzFctn* rtdistrvsvz = new AliHBTMonRtDistributionVsVzFctn(800,1.0e-11,-1.0e-11,800,1.0e-11,0.0);
+ analysis->AddParticleMonitorFunction(vydistrvsvx);
+ analysis->AddParticleMonitorFunction(rtdistrvsvz);
+
+ AliHBTMonPhiDistributionVsPtFctn* phidistr = new AliHBTMonPhiDistributionVsPtFctn(800,0,4,200,6.3,-3.2);
+ AliHBTMonThetaDistributionVsPtFctn* thetadistr = new AliHBTMonThetaDistributionVsPtFctn();
+ analysis->AddParticleMonitorFunction(phidistr);
+ analysis->AddParticleMonitorFunction(thetadistr);
+
+ cout<<"Building functions Done "<<endl;
+ delete paircut;
+
+ return analysis;
+
+//===========================================================================================
+// EEEE N N DDD =====================================================================
+// E NN N D D =====================================================================
+// EEE N N N D D =====================================================================
+// E N NN D D =====================================================================
+// EEEE N N DDD =====================================================================
+//===========================================================================================
+ /************************************************************/
+ /**** Q OUT Correlation Function ************************/
+ /************************************************************/
+ AliAODPairCut *outPairCut = new AliAODPairCut();
+ outPairCut->SetQSideCMSLRange(-0.01,0.01);
+ outPairCut->SetQLongCMSLRange(-0.01,0.01);
+ outPairCut->SetKtRange(0.0,0.8);
+
+ AliHBTWeightTheorQOutFctn *wqcfoutP = new AliHBTWeightTheorQOutFctn(1000,qinvmax,-qinvmax);
+ wqcfoutP->SetNumberOfBinsToScale(200);
+ wqcfoutP->SetPairCut(outPairCut);
+ analysis->AddParticleFunction(wqcfoutP);
+
+ /************************************************************/
+ /**** Q SIDE Correlation Function ************************/
+ /************************************************************/
+ AliAODPairCut *sidePairCut = new AliAODPairCut();
+ sidePairCut->SetQOutCMSLRange(-0.01,0.01);
+ sidePairCut->SetQLongCMSLRange(-0.01,0.01);
+ sidePairCut->SetKtRange(0.0,0.8);
+
+ AliHBTWeightTheorQSideFctn *wqcfsideP = new AliHBTWeightTheorQSideFctn(1000,qinvmax,-qinvmax);
+ wqcfsideP->SetNumberOfBinsToScale(200);
+ wqcfsideP->SetPairCut(sidePairCut);
+ analysis->AddParticleFunction(wqcfsideP);
+
+ /************************************************************/
+ /**** Q LONG Correlation Function ************************/
+ /************************************************************/
+ AliAODPairCut *longPairCut = new AliAODPairCut();
+ longPairCut->SetQOutCMSLRange(-0.01,0.01);
+ longPairCut->SetQSideCMSLRange(-0.01,0.01);
+ longPairCut->SetKtRange(0.0,0.8);
+
+ AliHBTWeightTheorQLongFctn *wqcflongP = new AliHBTWeightTheorQLongFctn(1000,qinvmax,-qinvmax);
+ wqcflongP->SetNumberOfBinsToScale(200);
+ wqcfsideP->SetPairCut(longPairCut);
+ analysis->AddParticleFunction(wqcflongP);
+
+
+
+ AliHBTMonPxDistributionFctn* pxdistr = new AliHBTMonPxDistributionFctn();
+ AliHBTMonPyDistributionFctn* pydistr = new AliHBTMonPyDistributionFctn();
+ AliHBTMonPzDistributionFctn* pzdistr = new AliHBTMonPzDistributionFctn();
+ AliHBTMonPDistributionFctn* pdistr = new AliHBTMonPDistributionFctn();
+ analysis->AddParticleMonitorFunction(pxdistr);
+ analysis->AddParticleMonitorFunction(pydistr);
+ analysis->AddParticleMonitorFunction(pzdistr);
+ analysis->AddParticleMonitorFunction(pdistr);
+
+ AliHBTMonVxDistributionFctn* vxdistr = new AliHBTMonVxDistributionFctn(800,1.0e-11,-1.0e-11);
+ AliHBTMonVyDistributionFctn* vydistr = new AliHBTMonVyDistributionFctn(800,1.0e-11,-1.0e-11);
+ AliHBTMonVzDistributionFctn* vzdistr = new AliHBTMonVzDistributionFctn(800,1.0e-11,-1.0e-11);
+ AliHBTMonRDistributionFctn* vrdistr = new AliHBTMonRDistributionFctn (800,1.0e-11,-1.0e-11);
+ analysis->AddParticleMonitorFunction(vxdistr);
+ analysis->AddParticleMonitorFunction(vydistr);
+ analysis->AddParticleMonitorFunction(vzdistr);
+ analysis->AddParticleMonitorFunction(vrdistr);
+
+
+ AliAODParticleCut* vxycut = new AliAODParticleCut();
+ AliHBTMonVyDistributionVsVxFctn* vydistrvsvx1 = new AliHBTMonVyDistributionVsVxFctn(800,1.0e-11,-1.0e-11,800,1.0e-11,-1.0e-11);
+ vydistrvsvx1->Rename("vydistrvsvx1","Vx:Vy 0.2 < Pt < 1.8");
+ vxycut->SetPtRange(0.2,0.8);
+ vydistrvsvx1->SetParticleCut(vxycut);
+ analysis->AddParticleMonitorFunction(vydistrvsvx1);
+
+ AliHBTMonVyDistributionVsVxFctn* vydistrvsvx2 = new AliHBTMonVyDistributionVsVxFctn(800,1.0e-11,-1.0e-11,800,1.0e-11,-1.0e-11);
+ vydistrvsvx2->Rename("vydistrvsvx2","Vx:Vy 0.8 < Pt < 1.2");
+ vxycut->SetPtRange(0.8,1.2);
+ vydistrvsvx2->SetParticleCut(vxycut);
+ analysis->AddParticleMonitorFunction(vydistrvsvx2);
+
+ AliHBTMonVyDistributionVsVxFctn* vydistrvsvx3 = new AliHBTMonVyDistributionVsVxFctn(800,1.0e-11,-1.0e-11,800,1.0e-11,-1.0e-11);
+ vydistrvsvx3->Rename("vydistrvsvx3","Vx:Vy 1.2 < Pt ");
+ vxycut->SetPtRange(1.2,10000.0);
+ vydistrvsvx3->SetParticleCut(vxycut);
+ analysis->AddParticleMonitorFunction(vydistrvsvx3);
+
+// AliHBTTwoKStarCorrelFctn* kstarP = new AliHBTTwoKStarCorrelFctn(600,qinvmax);
+// kstarP->Rename("kstarP","Particle (simulated) 2K^{*} Correlation Function "+system);
+// analysis->AddParticleFunction(kstarP);
+
+
+ delete paircut;
+// delete outPairCut;
+// delete sidePairCut;
+// delete longPairCut;
+ return analysis;
+ }