From ae008bd00b1e96f470770831fe694e153a7c4e36 Mon Sep 17 00:00:00 2001 From: skowron Date: Sun, 4 Jul 2004 13:56:53 +0000 Subject: [PATCH] Example Macro updated to the new analysis schema --- HBTAN/hbtanalysis.C | 688 ++++++++++++++++++++++++-------------------- 1 file changed, 379 insertions(+), 309 deletions(-) diff --git a/HBTAN/hbtanalysis.C b/HBTAN/hbtanalysis.C index d4491dee201..a4175d4fa03 100644 --- a/HBTAN/hbtanalysis.C +++ b/HBTAN/hbtanalysis.C @@ -1,85 +1,63 @@ -#ifndef __MAKECINT__ +#ifndef __MAKECINT__ #ifndef __CINT__ - - #include "AliHBTAnalysis.h" -// #include "alles.h" - #include "AliLoader.h" + #include "alles.h" + #include + #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 "AliHBTLLWeights.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 "TFile.h" + #include "AliPDG.h" #include "AliHBTMonDistributionFctns.h" #include "AliHBTMonResolutionFctns.h" - #endif + #endif #endif - -void hbtanalysis(Option_t* datatype, Option_t* processopt="TracksAndParticles", + +//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 = "") { - - AliVAODParticle::SetDebug(0); - AliLoader::SetDebug(0); - - AliAODParticleCut c1; - AliAODParticleCut c2 = c1; - -//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(); - analysis->SetCutsOnTracks(); + TString dataname; AliReader* reader; Int_t kine = strcmp(datatype,"Kine"); Int_t ESD = strcmp(datatype,"ESD"); @@ -89,15 +67,17 @@ void hbtanalysis(Option_t* datatype, Option_t* processopt="TracksAndParticles", { reader = new AliReaderKineTree(); processopt="Particles"; //this reader by definition reads only simulated particles + dataname = "Kine"; } else if(!ESD) { - AliReaderESD* esdreader = new AliReaderESD(); - esdreader->MustTPC(kTRUE); - esdreader->ReadSimulatedData(kTRUE); - esdreader->SetNumberOfTrackPoints(5,30.); - esdreader->SetClusterMap(); - reader = esdreader; + reader = new AliReaderESD(); + dataname = "TPC"; + } + else if(!intern) + { +// dataname = "TPC"; +// reader = new AliReaderAOD(dataname+".data.root"); } else { @@ -105,6 +85,8 @@ void hbtanalysis(Option_t* datatype, Option_t* processopt="TracksAndParticles", return; } + cout<<"hbtanalysis.C: Reader Set, "<Class()->GetName()<<" dataname: "<= 0) && (last>=0) && ( (last-first)>=0 ) ) {//read from many dirs dirs @@ -112,311 +94,399 @@ void hbtanalysis(Option_t* datatype, Option_t* processopt="TracksAndParticles", 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 AliAODParticleCut* readerpartcut= new AliAODParticleCut(); - readerpartcut->SetPtRange(0.0,10.0); - readerpartcut->SetPID(kPiPlus); - reader->AddParticleCut(readerpartcut);//read this particle type with this cut + 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); + TString filename = prefname + dataname + ".anal."; + TString fn; + TParticlePDG* pdg1; + TParticlePDG* pdg2; + TString p2name; + TString p1name ; - AliAODPairCut *paircut = new AliAODPairCut(); - Float_t qinvmin = 0.0; - Float_t qinvmax = 0.05;//50MeV - paircut->SetQInvRange(qinvmin,qinvmax); - - // paircut->SetAvSeparationRange(10.); //AntiMerging - paircut->SetClusterOverlapRange(-.5,1.0);//AntiSplitting - -// AliVAODParticleCut* partcut= new AliVAODParticleCut(); -// partcut->SetPID(kPiPlus); -// paircut->SetFirstPartCut(partcut); -// partcut->SetPID(kPiMinus); -// paircut->SetSecondPartCut(partcut); + /************************************************************/ + /**** P R O C E S S ***********************/ + /************************************************************/ + AliHBTAnalysis* hbtanalysis = 0x0; - analysis->SetGlobalPairCut(paircut); + 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 "<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 "<GetName(); + cout<<"hbtanalysis.C: buildanalysis for "<SetReader(reader); + + cout<<"hbtanalysis.C: buildanalysis "<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++; + } - /***********************************************************/ - /***** W E I G H T S ******************************/ - /***********************************************************/ - - AliHBTLLWeights::Instance()->SetParticlesTypes(kPiPlus,kPiPlus); - AliHBTLLWeights::Instance()->SetColoumb(kFALSE); - AliHBTLLWeights::Instance()->SetStrongInterSwitch(kFALSE); - - AliHBTLLWeights::Instance()->SetRandomPosition(kFALSE); -//AliHBTLLWeights::Instance()->SetR1dw(8.0); - - AliHBTLLWeights::Instance()->Init(); - AliHBTLLWeights::Instance()->Set(); + delete readerpartcut; + if (dirs) + { + dirs->SetOwner(); + delete dirs; + } - //example function - AliHBTWeightTheorQInvFctn *wqinvcfP = new AliHBTWeightTheorQInvFctn(100,qinvmax); - wqinvcfP->SetNumberOfBinsToScale(30); - wqinvcfP->Rename("wqinvcfP","Lednicky Q_{inv} Theoretical Correlation Function"); - analysis->AddParticleFunction(wqinvcfP); + } +AliHBTAnalysis* buildanalysis(Int_t pid1, Int_t pid2, Bool_t threeDcuts, Float_t qinvmax, const char* anasuffix) + { /************************************************************/ /**** Q INV Correlation Function ************************/ /************************************************************/ - - - 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^{+}"); - /************************************************************/ - /**** Q OUT Correlation Function ************************/ - /************************************************************/ + AliAODPairCut *paircut = new AliAODPairCut(); - AliHBTQOutLCMSCorrelFctn* qoutP = new AliHBTQOutLCMSCorrelFctn(); - qoutP->Rename("qoutP","Particle (simulated) Q_{out} CF \\pi^{+} \\pi^{+}"); - AliHBTQOutLCMSCorrelFctn* qoutT = new AliHBTQOutLCMSCorrelFctn(); - qoutT->Rename("qoutT","Track (recontructed) Q_{out} CF \\pi^{+} \\pi^{+}"); - - AliAODPairCut *outPairCut = new AliAODPairCut(); - outPairCut->SetQOutCMSLRange(0.0,0.15); - outPairCut->SetQSideCMSLRange(0.0,0.02); - outPairCut->SetQLongCMSLRange(0.0,0.02); - qoutP->SetPairCut(outPairCut); - qoutT->SetPairCut(outPairCut); - - //analysis->AddTrackFunction(qoutP); - //analysis->AddParticleFunction(qoutT); - - /************************************************************/ - /**** Q SIDE Correlation Function ***********************/ - /************************************************************/ + TString anasfx(anasuffix); - AliHBTQSideLCMSCorrelFctn* qsideP = new AliHBTQSideLCMSCorrelFctn(100,qinvmax); - qsideP->Rename("qsideP","Particle (simulated) Q_{side} CF \\pi^{+} \\pi^{+}"); - AliHBTQSideLCMSCorrelFctn* qsideT = new AliHBTQSideLCMSCorrelFctn(100,qinvmax); - qsideT->Rename("qsideT","Track (recontructed) Q_{side} CF \\pi^{+} \\pi^{+}"); - - AliAODPairCut *sidePairCut = new AliAODPairCut(); - 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 ***********************/ - /************************************************************/ - - AliHBTQLongLCMSCorrelFctn* qlongP = new AliHBTQLongLCMSCorrelFctn(100,qinvmax); - qlongP->Rename("qlongP","Particle (simulated) Q_{long} CF \\pi^{+} \\pi^{+}"); - AliHBTQLongLCMSCorrelFctn* qlongT = new AliHBTQLongLCMSCorrelFctn(100,qinvmax); - qlongT->Rename("qlongT","Track (recontructed) Q_{long} CF \\pi^{+} \\pi^{+}"); - - AliAODPairCut *longPairCut = new AliAODPairCut(); - 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); + 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: "<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"<AddResolutionFunction(&qinvVsktF); - - AliHBTQOutResolVsKtFctn qoutVsktF(200,1.0,0.0,300,0.05,-0.05); //QOutLCMS Res Vs Kt - if (threeDcuts) qoutVsktF.SetPairCut(outPairCut); - //analysis->AddResolutionFunction(&qoutVsktF); - - AliHBTQSideResolVsKtFctn qsideVsktF(200,1.0,0.0,300,0.015,-0.015); //QSideLCMS Res Vs Kt - if (threeDcuts) qsideVsktF.SetPairCut(sidePairCut); - //analysis->AddResolutionFunction(&qsideVsktF); - - AliHBTQLongResolVsKtFctn qlongVsktF(200,1.0,0.0,300,0.015,-0.015); //QLongLCMS Res Vs Kt - if (threeDcuts) qlongVsktF.SetPairCut(longPairCut); - //analysis->AddResolutionFunction(&qlongVsktF); - - AliHBTQInvResolVsQInvFctn qInvVsqinvF(200,qinvmax,qinvmin,300,0.015,-0.015); //QInvLCMS Res Vs QInvLCMS - //analysis->AddResolutionFunction(&qInvVsqinvF); - - AliHBTQOutResolVsQInvFctn qoutVsqinvF(200,qinvmax,qinvmin,300,0.05,-0.05); //QOutLCMS Res Vs QInvLCMS - if (threeDcuts) qoutVsqinvF.SetPairCut(outPairCut); - //analysis->AddResolutionFunction(&qoutVsqinvF); - - AliHBTQSideResolVsQInvFctn qsideVsqinvF(200,qinvmax,qinvmin,300,0.015,-0.015); //QSideLCMS Res Vs QInvLCMS - if (threeDcuts) qsideVsqinvF.SetPairCut(sidePairCut); - //analysis->AddResolutionFunction(&qsideVsqinvF); - - AliHBTQLongResolVsQInvFctn qlongVsqinvF(200,qinvmax,qinvmin,300,0.015,-0.015); //QLongLCMS Res Vs QInvLCMS - 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); + //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); - AliAODPairCut 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); + 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); - 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.0AddParticleFunction(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.0SetNumberOfBinsToScale(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.2AddParticleFunction(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.2SetNumberOfBinsToScale(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.4AddParticleFunction(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.4SetNumberOfBinsToScale(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.6AddParticleFunction(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.6SetNumberOfBinsToScale(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.8AddParticleFunction(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.8SetNumberOfBinsToScale(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.2AddParticleFunction(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.2SetNumberOfBinsToScale(20,20,20); + wqoslcfK4->SetPairCut(cfPairCutKt); + analysis->AddParticleFunction(wqoslcfK4); +//=========================================================================================== + - AliHBTQOutResolVsQOutFctn qoutVsqoutF; //QOutLCMS 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;//QSideLCMS 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 "<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); - - AliHBTMonPtResolutionVsPtFctn PtVsPtResF(400,4.0,0.0,300,0.07,-0.07); - analysis->AddParticleAndTrackMonitorFunction(&PtVsPtResF); + AliHBTWeightTheorQLongFctn *wqcflongP = new AliHBTWeightTheorQLongFctn(1000,qinvmax,-qinvmax); + wqcflongP->SetNumberOfBinsToScale(200); + wqcfsideP->SetPairCut(longPairCut); + analysis->AddParticleFunction(wqcflongP); - 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->SetCutsOnTracks(); - analysis->Init(); - 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; } - -- 2.43.0