/********************************************************************* * * * Configfemtoanalysis.C - configuration macro for the femtoscopic * * analysis, meant as a QA process for two-particle effects * * * * Author: Adam Kisiel (Adam.Kisiel@cern.ch) * * * *********************************************************************/ #if !defined(__CINT__) || defined(__MAKECINT_) #include "AliFemtoManager.h" #include "AliFemtoEventReaderESDChain.h" #include "AliFemtoEventReaderESDChainKine.h" #include "AliFemtoEventReaderAODChain.h" #include "AliFemtoSimpleAnalysis.h" #include "AliFemtoBasicEventCut.h" #include "AliFemtoESDTrackCut.h" #include "AliFemtoCorrFctn.h" #include "AliFemtoCutMonitorParticleYPt.h" #include "AliFemtoCutMonitorParticleVertPos.h" #include "AliFemtoCutMonitorParticleMomRes.h" #include "AliFemtoCutMonitorParticlePID.h" #include "AliFemtoCutMonitorEventMult.h" #include "AliFemtoCutMonitorEventVertex.h" #include "AliFemtoShareQualityTPCEntranceSepPairCut.h" #include "AliFemtoPairCutAntiGamma.h" #include "AliFemtoPairCutRadialDistance.h" #include "AliFemtoQinvCorrFctn.h" #include "AliFemtoCorrFctnNonIdDR.h" #include "AliFemtoShareQualityCorrFctn.h" #include "AliFemtoTPCInnerCorrFctn.h" #include "AliFemtoVertexMultAnalysis.h" #include "AliFemtoCorrFctn3DSpherical.h" #include "AliFemtoChi2CorrFctn.h" #include "AliFemtoCorrFctnTPCNcls.h" #include "AliFemtoBPLCMS3DCorrFctn.h" #include "AliFemtoCorrFctn3DLCMSSym.h" #include "AliFemtoModelBPLCMSCorrFctn.h" #include "AliFemtoModelCorrFctn3DSpherical.h" #include "AliFemtoModelGausLCMSFreezeOutGenerator.h" #include "AliFemtoModelGausRinvFreezeOutGenerator.h" #include "AliFemtoModelManager.h" #include "AliFemtoModelWeightGeneratorBasic.h" #include "AliFemtoModelWeightGeneratorLednicky.h" #include "AliFemtoCorrFctnDirectYlm.h" #include "AliFemtoModelCorrFctnDirectYlm.h" #include "AliFemtoModelCorrFctnSource.h" #include "AliFemtoCutMonitorParticlePtPDG.h" #include "AliFemtoKTPairCut.h" #include "AliFemtoPairCutPt.h" #endif //________________________________________________________________________ AliFemtoManager* ConfigFemtoAnalysis(const char* params="") { double PionMass = 0.13956995; double KaonMass = 0.493677; double ProtonMass = 0.938272013; const int numOfMultBins = 5; const int numOfChTypes = 13; const int numOfkTbins = 3; char *parameter[10]; if(strlen(params)!=0) { parameter[0] = strtok(params, ","); // Splits spaces between words in params cout<<"Parameter [0] (filterbit):"<mfit ITS+TPC int owncuts = 0; int owndca = 0; int gammacut = 0; // cut na ee z gamma double shqmax = 0.5; int nbinssh = 100; //AliFemtoEventReaderESDChain *Reader = new AliFemtoEventReaderESDChain(); //Reader->SetUseMultiplicity(AliFemtoEventReaderESDChain::kGlobalCount); AliFemtoEventReaderAODChain *Reader = new AliFemtoEventReaderAODChain(); Reader->SetFilterMask(atoi(parameter[0])); Reader->SetDCAglobalTrack(kTRUE); //false for FB7, true for the rest //we do not use DCA at all Reader->SetUseMultiplicity(AliFemtoEventReaderAOD::kReference); Reader->SetMinPlpContribSPD(atoi(parameter[3])); Reader->SetIsPileUpEvent(kTRUE); AliFemtoManager* Manager = new AliFemtoManager(); Manager->SetEventReader(Reader); AliFemtoVertexMultAnalysis *anetaphitpc[320]; AliFemtoBasicEventCut *mecetaphitpc[320]; AliFemtoCutMonitorEventMult *cutPassEvMetaphitpc[320]; AliFemtoCutMonitorEventMult *cutFailEvMetaphitpc[320]; AliFemtoCutMonitorEventVertex *cutPassEvVetaphitpc[320]; AliFemtoCutMonitorEventVertex *cutFailEvVetaphitpc[320]; AliFemtoESDTrackCut *dtc1etaphitpc[320]; AliFemtoESDTrackCut *dtc2etaphitpc[320]; AliFemtoESDTrackCut *dtc3etaphitpc[320]; AliFemtoCutMonitorParticleYPt *cutPass1YPtetaphitpc[320]; AliFemtoCutMonitorParticleYPt *cutFail1YPtetaphitpc[320]; AliFemtoCutMonitorParticlePID *cutPass1PIDetaphitpc[320]; AliFemtoCutMonitorParticlePID *cutFail1PIDetaphitpc[320]; AliFemtoCutMonitorParticleYPt *cutPass2YPtetaphitpc[320]; AliFemtoCutMonitorParticleYPt *cutFail2YPtetaphitpc[320]; AliFemtoCutMonitorParticlePID *cutPass2PIDetaphitpc[320]; AliFemtoCutMonitorParticlePID *cutFail2PIDetaphitpc[320]; AliFemtoCutMonitorParticleYPt *cutPass3YPtetaphitpc[320]; AliFemtoCutMonitorParticleYPt *cutFail3YPtetaphitpc[320]; AliFemtoCutMonitorParticlePID *cutPass3PIDetaphitpc[320]; AliFemtoCutMonitorParticlePID *cutFail3PIDetaphitpc[320]; // AliFemtoShareQualityTPCEntranceSepPairCut *sqpcetaphitpcsame[320]; //AliFemtoPairCutAntiGamma *sqpcetaphitpc[320]; //AliFemtoPairCutRadialDistance *sqpcetaphitpc[320]; AliFemtoShareQualityPairCut *sqpcetaphitpc[320]; // AliFemtoChi2CorrFctn *cchiqinvetaphitpc[320]; AliFemtoPairCutPt *ktpcuts[320]; AliFemtoQinvCorrFctn *cqinvkttpc[320]; AliFemtoQinvCorrFctn *cqinvtpc[320]; AliFemtoCorrFctnDEtaDPhi *cdedpetaphi[320]; // *** Third QA task - HBT analysis with all pair cuts off, TPC only *** // *** Begin pion-pion (positive) analysis *** int aniter = 0; for (int imult = 0; imult < numOfMultBins; imult++) { if (runmults[imult]) { for (int ichg = 0; ichg < numOfChTypes; ichg++) { if (runch[ichg]) { aniter = ichg * numOfMultBins + imult; anetaphitpc[aniter] = new AliFemtoVertexMultAnalysis(10, -10.0, 10.0, 30, multbins[imult], multbins[imult+1]); anetaphitpc[aniter]->SetNumEventsToMix(10); anetaphitpc[aniter]->SetMinSizePartCollection(1); anetaphitpc[aniter]->SetVerboseMode(kFALSE); //*** Event cut *** mecetaphitpc[aniter] = new AliFemtoBasicEventCut(); mecetaphitpc[aniter]->SetEventMult(0.001,100000); mecetaphitpc[aniter]->SetVertZPos(-10,10);//cm //****** event monitors ********** cutPassEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutPass%stpcM%i", chrgs[ichg], imult)); cutFailEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutFail%stpcM%i", chrgs[ichg], imult)); mecetaphitpc[aniter]->AddCutMonitor(cutPassEvMetaphitpc[aniter], cutFailEvMetaphitpc[aniter]); cutPassEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutPass%stpcM%i", chrgs[ichg], imult)); cutFailEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutFail%stpcM%i", chrgs[ichg], imult)); mecetaphitpc[aniter]->AddCutMonitor(cutPassEvVetaphitpc[aniter], cutFailEvVetaphitpc[aniter]); // ***** single particle track cuts ********* dtc1etaphitpc[aniter] = new AliFemtoESDTrackCut(); dtc2etaphitpc[aniter] = new AliFemtoESDTrackCut(); dtc3etaphitpc[aniter] = new AliFemtoESDTrackCut(); dtc1etaphitpc[aniter]->SetNsigmaTPCTOF(kTRUE); dtc2etaphitpc[aniter]->SetNsigmaTPCTOF(kTRUE); dtc3etaphitpc[aniter]->SetNsigmaTPCTOF(kTRUE); dtc1etaphitpc[aniter]->SetNsigma(3.0); dtc2etaphitpc[aniter]->SetNsigma(3.0); dtc3etaphitpc[aniter]->SetNsigma(3.0); dtc1etaphitpc[aniter]->SetCharge(1.0); dtc2etaphitpc[aniter]->SetCharge(-1.0); dtc1etaphitpc[aniter]->SetEta(-0.8,0.8); dtc2etaphitpc[aniter]->SetEta(-0.8,0.8); dtc3etaphitpc[aniter]->SetEta(-0.8,0.8); dtc1etaphitpc[aniter]->SetElectronRejection(true); dtc2etaphitpc[aniter]->SetElectronRejection(true); dtc3etaphitpc[aniter]->SetElectronRejection(true); if (ichg == 0 ||ichg == 1 ||ichg == 2)//protons 0-2 { dtc1etaphitpc[aniter]->SetPt(0.5,4); dtc2etaphitpc[aniter]->SetPt(0.5,4); dtc1etaphitpc[aniter]->SetMass(ProtonMass); dtc1etaphitpc[aniter]->SetMostProbableProton(); dtc2etaphitpc[aniter]->SetMass(ProtonMass); dtc2etaphitpc[aniter]->SetMostProbableProton(); } if (ichg == 3 ||ichg == 4 ||ichg == 5)//kaons 3-5 { dtc1etaphitpc[aniter]->SetPt(0.3,4); dtc2etaphitpc[aniter]->SetPt(0.3,4); dtc1etaphitpc[aniter]->SetMass(KaonMass); dtc1etaphitpc[aniter]->SetMostProbableKaon(); dtc2etaphitpc[aniter]->SetMass(KaonMass); dtc2etaphitpc[aniter]->SetMostProbableKaon(); } if (ichg == 6 ||ichg == 7 ||ichg == 8)//pions 6-8 { dtc1etaphitpc[aniter]->SetPt(0.2,4); dtc2etaphitpc[aniter]->SetPt(0.2,4); dtc1etaphitpc[aniter]->SetMass(PionMass); dtc1etaphitpc[aniter]->SetMostProbablePion(); dtc2etaphitpc[aniter]->SetMass(PionMass); dtc2etaphitpc[aniter]->SetMostProbablePion(); } if (ichg == 9)//all { dtc3etaphitpc[aniter]->SetPt(0.2,4); } if (ichg == 10 ||ichg == 11 ||ichg == 12)//plus,minus,mixed { dtc1etaphitpc[aniter]->SetPt(0.2,4); dtc2etaphitpc[aniter]->SetPt(0.2,4); } //****** DCA ****** if(owndca){ dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01); // DCA xy //dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.0182, 0.0350, -1.01); dtc1etaphitpc[aniter]->SetMaxImpactZ(2); //DCA Z dtc2etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01); // DCA xy dtc2etaphitpc[aniter]->SetMaxImpactZ(2); //DCA Z dtc3etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01); // DCA xy dtc3etaphitpc[aniter]->SetMaxImpactZ(2); //DCA Z } //****** Track quality cuts ****** if(owncuts){ dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit); dtc1etaphitpc[aniter]->SetminTPCncls(70); dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE); dtc1etaphitpc[aniter]->SetLabel(kFALSE); // dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0); dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0); // pisac //dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0); dtc2etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit); dtc2etaphitpc[aniter]->SetminTPCncls(70); dtc2etaphitpc[aniter]->SetRemoveKinks(kTRUE); dtc2etaphitpc[aniter]->SetLabel(kFALSE); // dtc2etaphitpc[aniter]->SetMaxITSChiNdof(6.0); dtc2etaphitpc[aniter]->SetMaxTPCChiNdof(4.0); // dtc2etaphitpc[aniter]->SetMaxSigmaToVertex(6.0); dtc3etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit); dtc3etaphitpc[aniter]->SetminTPCncls(70); dtc3etaphitpc[aniter]->SetRemoveKinks(kTRUE); dtc3etaphitpc[aniter]->SetLabel(kFALSE); // dtc3etaphitpc[aniter]->SetMaxITSChiNdof(6.0); dtc3etaphitpc[aniter]->SetMaxTPCChiNdof(4.0); // dtc3etaphitpc[aniter]->SetMaxSigmaToVertex(6.0); } //**************** track Monitors *************** if(1)//ichg>8) { cutPass3YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass%stpcM%i", chrgs[ichg], imult),PionMass); cutFail3YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail%stpcM%i", chrgs[ichg], imult),PionMass); if(ichg==9) dtc3etaphitpc[aniter]->AddCutMonitor(cutPass3YPtetaphitpc[aniter], cutFail3YPtetaphitpc[aniter]); if(ichg==0||ichg==3||ichg==6||ichg==10) dtc1etaphitpc[aniter]->AddCutMonitor(cutPass3YPtetaphitpc[aniter], cutFail3YPtetaphitpc[aniter]); if(ichg==1||ichg==4||ichg==7||ichg==11) dtc2etaphitpc[aniter]->AddCutMonitor(cutPass3YPtetaphitpc[aniter], cutFail3YPtetaphitpc[aniter]); if(ichg<3){ cutPass3PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass%stpcM%i", chrgs[ichg], imult),2);//0-pion,1-kaon,2-proton cutFail3PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail%stpcM%i", chrgs[ichg], imult),2); } else if(ichg>=3 && ichg<=5){ cutPass3PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass%stpcM%i", chrgs[ichg], imult),1);//0-pion,1-kaon,2-proton cutFail3PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail%stpcM%i", chrgs[ichg], imult),1); } else{ cutPass3PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass%stpcM%i", chrgs[ichg], imult),0);//0-pion,1-kaon,2-proton cutFail3PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail%stpcM%i", chrgs[ichg], imult),0); } if(ichg==9) dtc3etaphitpc[aniter]->AddCutMonitor(cutPass3PIDetaphitpc[aniter], cutFail3PIDetaphitpc[aniter]); if(ichg==0||ichg==3||ichg==6||ichg==10) dtc1etaphitpc[aniter]->AddCutMonitor(cutPass3PIDetaphitpc[aniter], cutFail3PIDetaphitpc[aniter]); if(ichg==1||ichg==4||ichg==7||ichg==11) dtc2etaphitpc[aniter]->AddCutMonitor(cutPass3PIDetaphitpc[aniter], cutFail3PIDetaphitpc[aniter]); } //******** Two - track cuts ************ //sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma(); //sqpcetaphitpc[aniter] = new AliFemtoPairCutRadialDistance(); sqpcetaphitpc[aniter] = new AliFemtoShareQualityPairCut(); sqpcetaphitpc[aniter]->SetShareQualityMax(0.0); // two track cuts on splitting and merging //1- wylaczany 0 -wlaczany sqpcetaphitpc[aniter]->SetShareFractionMax(0.05); // ile moga miec wspolnych klastrow //1 - wylaczany, 0.05 - wlaczany sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE); /*sqpcetaphitpc[aniter]->SetMaximumRadius(2.51); sqpcetaphitpc[aniter]->SetMinimumRadius(0.8); sqpcetaphitpc[aniter]->SetPhiStarDifferenceMinimum(0.02); sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.2); if (gammacut == 0) { sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0); sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0); } else if (gammacut == 1) { sqpcetaphitpc[aniter]->SetMaxEEMinv(0.002); sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.008); }*/ // sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(1.5); // sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(0.12, 0.03); // sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.02); //***** Setting cuts *********** // setting event cut anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]); //setting single track cuts if(ichg==0 || ichg==3 || ichg==6 || ichg==10) //positive like-sign { anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]); anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]); } if(ichg==1 || ichg==4 || ichg==7 || ichg==11)//negative like-sign { anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]); anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]); } if(ichg==2 || ichg==5 || ichg==8 || ichg==12)//unlike-sign { anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]); anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]); } if(ichg==9) //all { anetaphitpc[aniter]->SetFirstParticleCut(dtc3etaphitpc[aniter]); anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]); } //setting two-track cuts anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]); //**** Correlation functions ******* cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),35, 35); anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]); if (runktdep) { int ktm; for (int ikt=0; ikt6)?shqmax*2.5:shqmax); //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]); //anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]); cdedpetaphi[ktm] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%ipT%i", chrgs[ichg], imult,ikt),35, 35); cdedpetaphi[ktm]->SetPairSelectionCut(ktpcuts[ktm]); anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[ktm]); } } Manager->AddAnalysis(anetaphitpc[aniter]); } } } } return Manager; }