- #include "AliHBTAnalysis.h"
-// #include "alles.h"
- #include "AliHBTReader.h"
- #include "AliHBTReaderKineTree.h"
- #include "AliHBTReaderITSv2.h"
- #include "AliHBTReaderITSv1.h"
- #include "AliHBTReaderTPC.h"
- #include "AliHBTReaderInternal.h"
- #include "AliHBTParticleCut.h"
- #include "AliHBTEvent.h"
- #include "AliHBTPairCut.h"
+#ifndef __MAKECINT__
+ #ifndef __CINT__
+ #include "alles.h"
+ #include <TPDGCode.h>
+ #include "AliRunAnalysis.h"
+ #include "AliHBTAnalysis.h"
+ #include "AliReader.h"
+ #include "AliReaderESD.h"
+ #include "AliReaderKineTree.h"
+ #include "AliParticleCut.h"
+ #include "AliAOD.h"
+ #include "AliAODPairCut.h"
+ #include "AliAODParticleCut.h"
#include "AliHBTQResolutionFctns.h"
#include "AliHBTQDistributionFctns.h"
+ #include "AliHBTMonDistributionFctns.h"
#include "AliHBTTwoTrackEffFctn.h"
#include "AliHBTCorrelFctn.h"
+ #include "AliHBTWeightFctn.h"
+ #include "AliHBTWeightTheorFctn.h"
+ #include "AliHBTWeights.h"
+ #include "AliHBTLLWeights.h"
#include "TSystem.h"
#include "TObjString.h"
#include "TString.h"
- #include "TPDGCode.h"
+ #include "AliPDG.h"
#include "AliHBTMonDistributionFctns.h"
#include "AliHBTMonResolutionFctns.h"
-
-void hbtanalysis(Option_t* datatype, Option_t* processopt="TracksAndParticles",
+ #endif
+#endif
+
+//This macro can not be executed from
+AliHBTAnalysis* buildanalysis(Int_t pid1, Int_t pid2, Bool_t threeDcuts, Float_t qinvmax, const char* anasuffix = "");
+
+
+void hbtanalysis(Option_t* datatype="Kine", Option_t* processopt="TracksAndParticles",
Int_t first = -1,Int_t last = -1,
- char *outfile = "hbtanalysis.root")
+ char *prefname = "")
{
-//HBT Anlysis Macro
-//Anlyzes TPC recontructed tracks and simulated particles that corresponds to them
-
-//datatype defines type of data to be read
-// Kine - analyzes Kine Tree: simulated particles
-// TPC - analyzes TPC tracking + particles corresponding to these tracks
-// ITSv1 - analyzes ITSv1 ----------------------//--------------------------
-// ITSv2 - analyzes ITSv2 ----------------------//--------------------------
-
-//processopt defines option passed to AliHBTAnlysis::Process method
-// default: TracksAndParticles - process both recontructed tracks and sim. particles corresponding to them
-// Tracks - process only recontructed tracks
-// Particles - process only simulated particles
-
-//Reads data from diroctories from first to last(including)
-// For examples if first=3 and last=5 it reads from
-// ./3/
-// ./4/
-// ./5/
-//if first or last is negative (or both), it reads from current directory
-//
-//these names I use when analysis is done directly from CASTOR files via RFIO
-// const char* basedir="rfio:/castor/cern.ch/user/s/skowron/";
-// const char* serie="standard";
-// const char* field = "0.4";
const char* basedir=".";
- const char* serie="";
- const char* field = "";
+ const char* serie=".";
+ const char* field = ".";
- Bool_t threeDcuts = kFALSE;
-
- // Dynamically link some shared libs
+ Int_t PID[10];
+ PID[0]=kPiPlus;
+ PID[1]=kPiMinus;
+ PID[1]=0;
+
+ Bool_t ident = kTRUE;//identical particles
+ Bool_t nonident = kFALSE;//non identical particles analysis
+// Dynamically link some shared libs
// gROOT->LoadMacro("loadlibs.C");
// loadlibs();
-
+ gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libANALYSIS");
gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libHBTAN");
-
/***********************************************************/
//Create analysis and reader
- AliHBTAnalysis * analysis = new AliHBTAnalysis();
- AliHBTReader* reader;
+ TString dataname;
+ AliReader* reader;
Int_t kine = strcmp(datatype,"Kine");
Int_t ESD = strcmp(datatype,"ESD");
- Int_t TPC = strcmp(datatype,"TPC");
- Int_t ITSv1 = strcmp(datatype,"ITSv1");
- Int_t ITSv2 = strcmp(datatype,"ITSv2");
Int_t intern = strcmp(datatype,"Intern");
if(!kine)
{
- reader = new AliHBTReaderKineTree();
+ reader = new AliReaderKineTree();
processopt="Particles"; //this reader by definition reads only simulated particles
+ dataname = "Kine";
}
else if(!ESD)
{
- AliHBTReaderESD* esdreader = new AliHBTReaderESD();
- esdreader->ReadParticles(kTRUE);
- reader = esdreader;
- }
- else if(!TPC)
- {
- reader = new AliHBTReaderTPC();
- }
- else if(!ITSv1)
- {
- reader = new AliHBTReaderITSv1();
- }
- else if(!ITSv2)
- {
- reader = new AliHBTReaderITSv2();
+ reader = new AliReaderESD();
+ dataname = "TPC";
}
else if(!intern)
{
- reader = new AliHBTReaderInternal("data.root");
+// dataname = "TPC";
+// reader = new AliReaderAOD(dataname+".data.root");
}
else
{
return;
}
+ cout<<"hbtanalysis.C: Reader Set, "<<reader->Class()->GetName()<<" dataname: "<<dataname<<endl;
+ cout<<"hbtanalysis.C: Setting dirs\n";
TObjArray* dirs=0;
if ( (first >= 0) && (last>=0) && ( (last-first)>=0 ) )
{//read from many dirs dirs
dirs = new TObjArray(last-first+1);
for (Int_t i = first; i<=last; i++)
{
+// sprintf(buff,"%s/%s/%s/%05.5d",basedir,field,serie,i);
sprintf(buff,"%s/%s/%s/%d",basedir,field,serie,i);
TObjString *odir= new TObjString(buff);
dirs->Add(odir);
}
}
reader->SetDirs(dirs);
-
+ reader->SetName("READER");
+ reader->SetTitle("Reader Used in HBT Analysis");
+ cout<<"hbtanalysis.C: Dirs set\n";
/***********************************************************/
/***** R E A D E R ***************************************/
/***********************************************************/
//we want have only low pt pi+ so set a cut to reader
- AliHBTParticleCut* readerpartcut= new AliHBTParticleCut();
- readerpartcut->SetPtRange(0.0,10.0);
- readerpartcut->SetPID(kPiPlus);
- reader->AddParticleCut(readerpartcut);//read this particle type with this cut
+ AliAODParticleCut* readerpartcut= new AliAODParticleCut();
+ readerpartcut->SetPtRange(0.0,10000.0);
+// readerpartcut->SetThetaRange(0.25*TMath::Pi(), 0.75*TMath::Pi());//45->135 deg.
+ readerpartcut->SetYRange(-1.0,1.0);
-// readerpartcut->SetPtRange(0.0,10.0);
-// readerpartcut->SetPID(kPiMinus);
-// reader->AddParticleCut(readerpartcut);//read this particle type with this cut
+ Int_t l = 0;
+ while (PID[l] != 0)
+ {
+ readerpartcut->SetPID(PID[l]);
+ reader->AddParticleCut(readerpartcut);//read this particle type with this cut
+ l++;
+ }
- analysis->SetReader(reader);
-
- /***********************************************************/
- /***** W E I G H T S ******************************/
- /***********************************************************/
-
- AliHBTLLWeights::Instance()->SetParticlesTypes(kPiPlus,kPiPlus);
- AliHBTLLWeights::Instance()->SetColoumb(kFALSE);
- AliHBTLLWeights::Instance()->SetStrongInterSwitch(kFALSE);
+ TString filename = prefname + dataname + ".anal.";
+ TString fn;
+ TParticlePDG* pdg1;
+ TParticlePDG* pdg2;
+ TString p2name;
+ TString p1name ;
- AliHBTLLWeights::Instance()->SetRandomPosition(kFALSE);
-//AliHBTLLWeights::Instance()->SetR1dw(8.0);
-
- AliHBTLLWeights::Instance()->Init();
- AliHBTLLWeights::Instance()->Set();
+ /************************************************************/
+ /**** P R O C E S S ***********************/
+ /************************************************************/
+ AliHBTAnalysis* hbtanalysis = 0x0;
+
+ l = 0;
+ Int_t k;
+ while (PID[l] != 0)
+ {
+ pdg1 = TDatabasePDG::Instance()->GetParticle(PID[l]);
+ if (pdg1 == 0x0)
+ {
+ cerr<<"ERROR: hbtanalysis.C: Can not find particle type "<<PID[l]<<" in PDG DataBase\n";
+ l++;
+ continue;
+ }
+ p1name= pdg1->GetName();
+ k=l;
+ while (PID[k] != 0)
+ {
+ if ( (k==l)&&(ident==kFALSE) ) { k++;continue;}
+ if ( (k!=l)&&(nonident==kFALSE) ) { k++;continue; }
+
+ pdg2 = TDatabasePDG::Instance()->GetParticle(PID[k]);
+ if (pdg1 == 0x0)
+ {
+ cerr<<"ERROR: hbtanalysis.C: Can not find particle type "<<PID[k]<<" in PDG DataBase\n";
+ k++;
+ continue;
+ }
+ p2name = pdg2->GetName();
+ cout<<"hbtanalysis.C: buildanalysis for "<<PID[l]<<"("<<p1name<<") "
+ <<PID[k]<<"("<<p2name<<")\n";
+ fn = filename + p1name + p2name + ".root";
+ cout<<"hbtanalysis.C: File Name is: "<<fn<<endl;
+
+ AliRunAnalysis* analysis = new AliRunAnalysis();
+ analysis->SetReader(reader);
+
+ cout<<"hbtanalysis.C: buildanalysis "<<endl;
+ hbtanalysis = buildanalysis(PID[l],PID[k],kFALSE,1.0,"-a1");
+ cout<<"hbtanalysis.C: buildanalysis Done"<<endl;
+ if (hbtanalysis == 0x0)
+ {
+ cout<<"ERROR: hbtanalysis.C: buildanalysis function returned NULL pointer\n";
+ cout<<"ERROR: Deleting Run Analysis ..."<<endl;
+ delete analysis;
+ cout<<"ERROR: Deleting Run Analysis Done"<<endl;
+ k++;
+ continue;
+ }
+ TFile* histoOutput = TFile::Open(fn,"recreate");
+// hbtanalysis->SetOutputFileName(fn);
+
+ AliHBTLLWeights::Instance()->SetParticlesTypes(PID[l],PID[k]);
+ AliHBTLLWeights::Instance()->SetColoumb(kFALSE);
+ AliHBTLLWeights::Instance()->SetStrongInterSwitch(kFALSE);
+ AliHBTLLWeights::Instance()->Init();
+ AliHBTLLWeights::Instance()->Set();
+
+// AliHBTCrab::Instance()->Init(PID[l],PID[k]);
+// AliHBTCrab::Instance()->Set();
+
+ hbtanalysis->SetProcessOption(AliHBTAnalysis::kSimulated);
+ analysis->Add(hbtanalysis);
+
+ histoOutput->cd();
+ cout<<"hbtanalysis.C: Run\n";
+ analysis->Run();
+
+ cout<<"hbtanalysis.C: Write\n";
+ reader->Write();
+ cout<<"hbtanalysis.C: Delete analysis\n";
+ hbtanalysis->SetOwner(kTRUE);
+ delete analysis;
+ histoOutput->Close();
+ k++;
+ }
+ l++;
+ }
+
+ delete readerpartcut;
+ if (dirs)
+ {
+ dirs->SetOwner();
+ delete dirs;
+ }
- //example function
- AliHBTWeightTheorQInvFctn *wqinvcfP = new AliHBTWeightTheorQInvFctn(nbins,qmax);
- wqinvcfP->SetNumberOfBinsToScale(binstoscale);
- wqinvcfP->Rename("wqinvcfP","Lednicky Q_{inv} Theoretical Correlation Function "+system);
- analysis->AddParticleFunction(wqinvcfP);
+ }
+AliHBTAnalysis* buildanalysis(Int_t pid1, Int_t pid2, Bool_t threeDcuts, Float_t qinvmax, const char* anasuffix)
+ {
/************************************************************/
/**** Q INV Correlation Function ************************/
/************************************************************/
-
- AliHBTPairCut *paircut = new AliHBTPairCut();
- Float_t qinvmin = 0.0;
- Float_t qinvmax = 0.05;//50MeV
- paircut->SetQInvRange(qinvmin,qinvmax);
-// AliHBTParticleCut* partcut= new AliHBTParticleCut();
-// partcut->SetPID(kPiPlus);
-// paircut->SetFirstPartCut(partcut);
-// partcut->SetPID(kPiMinus);
-// paircut->SetSecondPartCut(partcut);
-
-// analysis->SetGlobalPairCut(paircut);
-
- AliHBTQInvCorrelFctn * qinvcfT = new AliHBTQInvCorrelFctn(100,qinvmax);
- AliHBTQInvCorrelFctn * qinvcfP = new AliHBTQInvCorrelFctn(100,qinvmax);
- analysis->AddTrackFunction(qinvcfT);
- analysis->AddParticleFunction(qinvcfP);
+ AliHBTAnalysis * analysis = new AliHBTAnalysis();
+ analysis->SetBufferSize(1);
- qinvcfP->Rename("qinvcfP","Particle (simulated) Qinv CF \\pi^{+} \\pi^{+}");
- qinvcfT->Rename("qinvcfT","Track (recontructed) Qinv CF \\pi^{+} \\pi^{+}");
+ AliAODPairCut *paircut = new AliAODPairCut();
- /************************************************************/
- /**** Q OUT Correlation Function ************************/
- /************************************************************/
+ TString anasfx(anasuffix);
- AliHBTQOutCMSLCCorrelFctn* qoutP = new AliHBTQOutCMSLCCorrelFctn();
- qoutP->Rename("qoutP","Particle (simulated) Q_{out} CF \\pi^{+} \\pi^{+}");
- AliHBTQOutCMSLCCorrelFctn* qoutT = new AliHBTQOutCMSLCCorrelFctn();
- qoutT->Rename("qoutT","Track (recontructed) Q_{out} CF \\pi^{+} \\pi^{+}");
-
- AliHBTPairCut *outPairCut = new AliHBTPairCut();
- outPairCut->SetQOutCMSLRange(0.0,0.15);
- outPairCut->SetQSideCMSLRange(0.0,0.02);
- outPairCut->SetQLongCMSLRange(0.0,0.02);
- qoutP->SetPairCut(outPairCut);
- qoutT->SetPairCut(outPairCut);
+ Float_t qinvmin = 0.0;
+ paircut->SetQInvRange(qinvmin,1.5*qinvmax);
- //analysis->AddTrackFunction(qoutP);
- //analysis->AddParticleFunction(qoutT);
+ 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();
- /************************************************************/
- /**** Q SIDE Correlation Function ***********************/
- /************************************************************/
+ cout<<"Building functions"<<endl;
- AliHBTQSideCMSLCCorrelFctn* qsideP = new AliHBTQSideCMSLCCorrelFctn(100,qinvmax);
- qsideP->Rename("qsideP","Particle (simulated) Q_{side} CF \\pi^{+} \\pi^{+}");
- AliHBTQSideCMSLCCorrelFctn* qsideT = new AliHBTQSideCMSLCCorrelFctn(100,qinvmax);
- qsideT->Rename("qsideT","Track (recontructed) Q_{side} CF \\pi^{+} \\pi^{+}");
-
- AliHBTPairCut *sidePairCut = new AliHBTPairCut();
- sidePairCut->SetQOutCMSLRange(0.0,0.02);
- sidePairCut->SetQSideCMSLRange(0.0,0.15);
- sidePairCut->SetQLongCMSLRange(0.0,0.02);
- qsideP->SetPairCut(sidePairCut);
- qsideT->SetPairCut(sidePairCut);
-
- //analysis->AddTrackFunction(qsideP);
- //analysis->AddParticleFunction(qsideT);
-
- /************************************************************/
- /**** Q LONG Correlation Function ***********************/
- /************************************************************/
-
- AliHBTQLongCMSLCCorrelFctn* qlongP = new AliHBTQLongCMSLCCorrelFctn(100,qinvmax);
- qlongP->Rename("qlongP","Particle (simulated) Q_{long} CF \\pi^{+} \\pi^{+}");
- AliHBTQLongCMSLCCorrelFctn* qlongT = new AliHBTQLongCMSLCCorrelFctn(100,qinvmax);
- qlongT->Rename("qlongT","Track (recontructed) Q_{long} CF \\pi^{+} \\pi^{+}");
-
- AliHBTPairCut *longPairCut = new AliHBTPairCut();
- longPairCut->SetQOutCMSLRange(0.0,0.02);
- longPairCut->SetQSideCMSLRange(0.0,0.02);
- longPairCut->SetQLongCMSLRange(0.0,0.15);
- qlongP->SetPairCut(longPairCut);
- qlongT->SetPairCut(longPairCut);
-
- //analysis->AddTrackFunction(qlongT);
- //analysis->AddParticleFunction(qlongT);
-
-
- /************************************************************/
- /************************************************************/
- /************************************************************/
- /**** R E S O L U T I O N S ***********************/
- /************************************************************/
/************************************************************/
+ /**** 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);
- AliHBTQInvResolVsKtFctn qinvVsktF(200,1.0,0.0,300,0.015,-0.015); //QInvCMSLC Res Vs Kt
- if (threeDcuts) qinvVsktF.SetPairCut(paircut);
- //analysis->AddResolutionFunction(&qinvVsktF);
-
- AliHBTQOutResolVsKtFctn qoutVsktF(200,1.0,0.0,300,0.05,-0.05); //QOutCMSLC Res Vs Kt
- if (threeDcuts) qoutVsktF.SetPairCut(outPairCut);
- //analysis->AddResolutionFunction(&qoutVsktF);
-
- AliHBTQSideResolVsKtFctn qsideVsktF(200,1.0,0.0,300,0.015,-0.015); //QSideCMSLC Res Vs Kt
- if (threeDcuts) qsideVsktF.SetPairCut(sidePairCut);
- //analysis->AddResolutionFunction(&qsideVsktF);
-
- AliHBTQLongResolVsKtFctn qlongVsktF(200,1.0,0.0,300,0.015,-0.015); //QLongCMSLC Res Vs Kt
- if (threeDcuts) qlongVsktF.SetPairCut(longPairCut);
- //analysis->AddResolutionFunction(&qlongVsktF);
-
- AliHBTQInvResolVsQInvFctn qInvVsqinvF(200,qinvmax,qinvmin,300,0.015,-0.015); //QInvCMSLC Res Vs QInvCMSLC
- //analysis->AddResolutionFunction(&qInvVsqinvF);
-
- AliHBTQOutResolVsQInvFctn qoutVsqinvF(200,qinvmax,qinvmin,300,0.05,-0.05); //QOutCMSLC Res Vs QInvCMSLC
- if (threeDcuts) qoutVsqinvF.SetPairCut(outPairCut);
- //analysis->AddResolutionFunction(&qoutVsqinvF);
-
- AliHBTQSideResolVsQInvFctn qsideVsqinvF(200,qinvmax,qinvmin,300,0.015,-0.015); //QSideCMSLC Res Vs QInvCMSLC
- if (threeDcuts) qsideVsqinvF.SetPairCut(sidePairCut);
- //analysis->AddResolutionFunction(&qsideVsqinvF);
-
- AliHBTQLongResolVsQInvFctn qlongVsqinvF(200,qinvmax,qinvmin,300,0.015,-0.015); //QLongCMSLC Res Vs QInvCMSLC
- if (threeDcuts) qlongVsqinvF.SetPairCut(longPairCut);
- //analysis->AddResolutionFunction(&qlongVsqinvF);
-
-
- AliHBTPairThetaResolVsQInvFctn pairThetaVsqinv(200,qinvmax,qinvmin,300,0.015,-0.015);
- if (threeDcuts) pairThetaVsqinv.SetPairCut(longPairCut);
- //analysis->AddResolutionFunction(&pairThetaVsqinv);
-
- AliHBTPairThetaResolVsKtFctn pairThetaVsKt(200,1.0,0.0,300,0.015,-0.015);
- if (threeDcuts) pairThetaVsKt.SetPairCut(longPairCut);
- //analysis->AddResolutionFunction(&pairThetaVsKt);
-
- AliHBTPairCut phipc;
- phipc.SetQLongCMSLRange(0.0,0.02);
-
- AliHBTPairPhiResolVsQInvFctn pairPhiVsqinv(200,qinvmax,qinvmin,300,0.015,-0.015);
- if (threeDcuts) pairPhiVsqinv.SetPairCut(&phipc);
- //analysis->AddResolutionFunction(&pairPhiVsqinv);
-
- AliHBTPairPhiResolVsKtFctn pairPhiVsKt(200,1.0,0.0,300,0.015,-0.015);
- if (threeDcuts) pairPhiVsKt.SetPairCut(&phipc);
- //analysis->AddResolutionFunction(&pairPhiVsKt);
+//===========================================================================================
+ 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);
+//===========================================================================================
+
- AliHBTQOutResolVsQOutFctn qoutVsqoutF; //QOutCMSLC Res Vs QOut
- if (threeDcuts) qoutVsqoutF.SetPairCut(outPairCut);
- //analysis->AddResolutionFunction(&qoutVsqoutF);
+ 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);
- AliHBTQSideResolVsQSideFctn qsideVsqsideF;//QSideCMSLC Res Vs QSide
- if (threeDcuts) qsideVsqsideF.SetPairCut(sidePairCut);
- //analysis->AddResolutionFunction(&qsideVsqsideF);
+ 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;
- AliHBTQLongResolVsQLongFctn qlongVsqlongF;//QLongCMSLC Res Vs QLong
- if (threeDcuts) qlongVsqlongF.SetPairCut(longPairCut);
- //analysis->AddResolutionFunction(&qlongVsqlongF);
-
+ 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 ************************/
/************************************************************/
- /************************************************************/
- /**** D I S T R B U T I O N S ***********************/
- /************************************************************/
- /************************************************************/
- /************************************************************/
+ AliAODPairCut *outPairCut = new AliAODPairCut();
+ outPairCut->SetQSideCMSLRange(-0.01,0.01);
+ outPairCut->SetQLongCMSLRange(-0.01,0.01);
+ outPairCut->SetKtRange(0.0,0.8);
- /************************************************************/
- /**** OUT VS KT ***********************/
- /************************************************************/
- AliHBTQOutDistributionVsKtFctn qoutVsKtDistP;
- qoutVsKtDistP.Rename("qoutVsKtDistP",qoutVsKtDistP.GetTitle());
- AliHBTQOutDistributionVsKtFctn qoutVsKtDistT;
- qoutVsKtDistT.Rename("qoutVsKtDistT",qoutVsKtDistT.GetTitle());
- if (threeDcuts) qoutVsKtDistP.SetPairCut(outPairCut);
- if (threeDcuts) qoutVsKtDistT.SetPairCut(outPairCut);
- //analysis->AddParticleFunction(&qoutVsKtDistP);
- //analysis->AddTrackFunction(&qoutVsKtDistT);
- /************************************************************/
- /**** Side VS KT ***********************/
- /************************************************************/
- AliHBTQSideDistributionVsKtFctn qSideVsKtDistP;
- qSideVsKtDistP.Rename("qSideVsKtDistP",qSideVsKtDistP.GetTitle());
- AliHBTQSideDistributionVsKtFctn qSideVsKtDistT;
- qSideVsKtDistT.Rename("qSideVsKtDistT",qSideVsKtDistT.GetTitle());
- if (threeDcuts) qSideVsKtDistP.SetPairCut(sidePairCut);
- if (threeDcuts) qSideVsKtDistT.SetPairCut(sidePairCut);
- //analysis->AddParticleFunction(&qSideVsKtDistP);
- //analysis->AddTrackFunction(&qSideVsKtDistT);
- /************************************************************/
- /**** Long VS KT ***********************/
- /************************************************************/
- AliHBTQLongDistributionVsKtFctn qLongVsKtDistP;
- qLongVsKtDistP.Rename("qLongVsKtDistP",qLongVsKtDistP.GetTitle());
- AliHBTQLongDistributionVsKtFctn qLongVsKtDistT;
- qLongVsKtDistT.Rename("qLongVsKtDistT",qLongVsKtDistT.GetTitle());
- if (threeDcuts) qLongVsKtDistP.SetPairCut(longPairCut);
- if (threeDcuts) qLongVsKtDistT.SetPairCut(longPairCut);
- //analysis->AddParticleFunction(&qLongVsKtDistP);
- //analysis->AddTrackFunction(&qLongVsKtDistT);
+ 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);
+
/************************************************************/
- /**** M O N I T O R R E S O L U T I O N S *************/
- /************************************************************/
- /************************************************************/
+ /**** 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);
- AliHBTMonPxResolutionVsPtFctn PxVsPtResF(200,1.0,0.0,300,0.05,-0.05);
- //analysis->AddParticleAndTrackMonitorFunction(&PxVsPtResF);
-
- AliHBTMonPyResolutionVsPtFctn PyVsPtResF(200,1.0,0.0,300,0.05,-0.05);
- //analysis->AddParticleAndTrackMonitorFunction(&PyVsPtResF);
-
- AliHBTMonPzResolutionVsPtFctn PzVsPtResF(200,1.0,0.0,300,0.05,-0.05);
- //analysis->AddParticleAndTrackMonitorFunction(&PzVsPtResF);
-
- AliHBTMonPResolutionVsPtFctn PVsPtResF(200,1.0,0.0,300,0.05,-0.05);
- //analysis->AddParticleAndTrackMonitorFunction(&PVsPtResF);
+ AliHBTWeightTheorQLongFctn *wqcflongP = new AliHBTWeightTheorQLongFctn(1000,qinvmax,-qinvmax);
+ wqcflongP->SetNumberOfBinsToScale(200);
+ wqcfsideP->SetPairCut(longPairCut);
+ analysis->AddParticleFunction(wqcflongP);
- AliHBTMonPtResolutionVsPtFctn PtVsPtResF(400,4.0,0.0,300,0.07,-0.07);
- analysis->AddParticleAndTrackMonitorFunction(&PtVsPtResF);
-
- AliHBTMonPhiResolutionVsPtFctn PhiVsPtResF(200,1.0,0.0,300,0.02,-0.02);
- analysis->AddParticleAndTrackMonitorFunction(&PhiVsPtResF);
-
- AliHBTMonThetaResolutionVsPtFctn ThetaVsPtResF(200,1.0,0.0,300,0.02,-0.02);
- analysis->AddParticleAndTrackMonitorFunction(&ThetaVsPtResF);
+
+ 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);
- /************************************************************/
- /**** P R O C E S S ***********************/
- /************************************************************/
- analysis->SetBufferSize(2);
- analysis->Process(processopt);
+ 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);
- TFile histoOutput(outfile,"recreate");
- analysis->WriteFunctions();
- histoOutput.Close();
+// AliHBTTwoKStarCorrelFctn* kstarP = new AliHBTTwoKStarCorrelFctn(600,qinvmax);
+// kstarP->Rename("kstarP","Particle (simulated) 2K^{*} Correlation Function "+system);
+// analysis->AddParticleFunction(kstarP);
- delete qinvcfP;
- delete qinvcfT;
- delete paircut;
- delete readerpartcut;
- if (dirs)
- {
- dirs->SetOwner();
- delete dirs;
- }
- delete reader;
- delete analysis;
+ delete paircut;
+// delete outPairCut;
+// delete sidePairCut;
+// delete longPairCut;
+ return analysis;
}
-