]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/macros/runBalanceFunctionToyModel.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / runBalanceFunctionToyModel.C
1 //=========Total multiplicity=========//
2 Double_t nTotalMultiplicityMean = 100.;
3 Double_t nTotalMultiplicitySigma = 10.;
4
5 //=========Net charge=========//
6 Double_t nNetChargeMean = 0.0;
7 Double_t nNetChargeSigma = 3.0;
8
9 //==============Particles and spectra==============//
10 //Double_t gAllChargesTemperature = 0.11; //in GeV
11 Double_t gAllChargesTemperature = 4.5; //not temperature==>modified hagedorn
12 Double_t gPionPercentage = 0.8;
13 Double_t gPionTemperature = 0.1; //in GeV
14 Double_t gKaonPercentage = 0.12;
15 Double_t gKaonTemperature = 0.12; //in GeV
16 Double_t gProtonPercentage = 0.08;
17 Double_t gProtonTemperature = 0.2; //in GeV
18 //==============Particles and spectra==============//
19
20 //==============Flow values==============//
21 Double_t gDirectedFlow = 0.0;
22 Double_t gEllipticFlow = 0.2;
23 Double_t gTriangularFlow = 0.0;
24 Double_t gQuandrangularFlow = 0.0;
25 Double_t gPentangularFlow = 0.0;
26 //==============Flow values==============//
27
28 //=========Acceptance definition=========//
29 Double_t gEtaMin = -1.0;
30 Double_t gEtaMax = 1.0;
31 Double_t gPtMin = 0.1;
32 Double_t gPtMax = 20.0;
33 //=========Acceptance definition=========//
34
35 //=========Acceptance filter=========//
36 Bool_t kUseAcceptanceFilter = kFALSE;
37 const char *gAcceptanceFilterFile = "efficiencyALICE.root";
38 //=========Acceptance filter=========//
39
40 //=========Detector effects=========//
41 Bool_t kSimulateDetectorEffects = kTRUE;
42 Int_t fNumberOfInefficientSectors = 5;//inefficient secotrs in phi
43 Double_t fInefficiencyFactorInPhi = 0.65;//efficiency factor < 1
44 Int_t fNumberOfDeadSectors = 3;//number of dead sectors
45 Bool_t fEfficiencyDropNearEtaEdges = kTRUE;//efficiency drop in eta edges
46 //=========Detector effects=========//
47
48 //=========Jets=========//
49 Bool_t kUseJets = kFALSE;
50 //=========Jets=========//
51
52 //=========Dynamical Correlations=========//
53 Bool_t kUseDynamicalCorrelations = kFALSE;
54 Double_t gDynamicalCorrelationsPercentage = 0.1;
55 //=========Dynamical Correlations=========//
56
57 //=========bf object configuration=========//
58 Bool_t kRunShuffling = kFALSE;
59 Bool_t kRunMixing = kTRUE;
60 Bool_t bResonancesCut = kFALSE;
61 Bool_t bHBTcut = kFALSE;
62 Bool_t bConversionCut = kFALSE;
63 Bool_t bMomentumDifferenceCut = kFALSE;
64 TString fArgEventClass = "EventPlane";
65 Double_t deltaEtaMax = TMath::Abs(gEtaMax-gEtaMin);
66 Bool_t bVertexBinning = kFALSE;
67 //=========bf object configuration=========//
68
69 //=========Debug option=========//
70 Bool_t kUseDebug = kFALSE;
71 //=========Debug option=========//
72
73 // Run macro used for the toy model analysis
74 // Author: Panos.Christakoglou@nikhef.nl
75
76 //____________________________________________________________________
77 void runBalanceFunctionToyModel(Int_t nEvents = 10,
78                                 Bool_t kUseAllCharges = kTRUE) {
79   TStopwatch timer;
80   timer.Start();
81
82   // load libraries
83   gSystem->Load("libCore");
84   gSystem->Load("libGeom");
85   gSystem->Load("libVMC");
86   gSystem->Load("libPhysics");
87   gSystem->Load("libTree");
88
89   gSystem->Load("libSTEERBase");
90   gSystem->Load("libESD");
91   gSystem->Load("libAOD");
92   gSystem->Load("libANALYSIS");
93   gSystem->Load("libANALYSISalice");
94   gSystem->Load("libEventMixing");
95   gSystem->Load("libCORRFW");
96   gSystem->Load("libPWGTools");
97   gSystem->Load("libPWGCFebye");
98
99   //configure the bf objects
100   gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/configBalanceFunctionPsiAnalysis.C");
101   AliBalancePsi *bf  = GetBalanceFunctionObject("MC","",0,100,kRunShuffling,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);
102   AliBalancePsi *bfm = 0x0;
103   if(kRunMixing) 
104     bfm = GetBalanceFunctionObject("MC","",0,100,kRunShuffling,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);
105   
106   //Configure the toy model object
107   AliAnalysisTaskToyModel *toyModelAnalysis = new AliAnalysisTaskToyModel();
108   if(kUseDebug) toyModelAnalysis->SetDebugFlag();
109   toyModelAnalysis->SetAnalysisObject(bf);
110   if(kRunMixing)
111     toyModelAnalysis->SetMixingObject(bfm);
112   toyModelAnalysis->SetTotalMultiplicity(nTotalMultiplicityMean,nTotalMultiplicitySigma);
113   toyModelAnalysis->SetNetCharge(nNetChargeMean,nNetChargeSigma);
114   toyModelAnalysis->SetKinematicsCutsMC(gPtMin,gPtMax,gEtaMin,gEtaMax);
115
116   if(kUseAllCharges) {
117     toyModelAnalysis->SetSpectraTemperatureForAllCharges(gAllChargesTemperature);
118     toyModelAnalysis->SetDirectedFlowForAllCharges(gDirectedFlow);
119     toyModelAnalysis->SetEllipticFlowForAllCharges(gEllipticFlow);
120     toyModelAnalysis->SetTriangularFlowForAllCharges(gTriangularFlow);
121     toyModelAnalysis->SetQuandrangularFlowForAllCharges(gQuandrangularFlow);
122     toyModelAnalysis->SetPentangularFlowForAllCharges(gPentangularFlow);
123   }
124   else {
125     //Pions
126     toyModelAnalysis->SetPionPercentage(gPionPercentage);
127     toyModelAnalysis->SetSpectraTemperatureForPions(gPionTemperature);
128     toyModelAnalysis->SetDirectedFlowForPions(gDirectedFlow);
129     toyModelAnalysis->SetEllipticFlowForPions(gEllipticFlow);
130     toyModelAnalysis->SetTriangularFlowForPions(gTriangularFlow);
131     toyModelAnalysis->SetQuandrangularFlowForPions(gQuandrangularFlow);
132     toyModelAnalysis->SetPentangularFlowForPions(gPentangularFlow);
133
134     //Kaons
135     toyModelAnalysis->SetKaonPercentage(gKaonPercentage);
136     toyModelAnalysis->SetSpectraTemperatureForKaons(gKaonTemperature);
137     toyModelAnalysis->SetDirectedFlowForKaons(gDirectedFlow);
138     toyModelAnalysis->SetEllipticFlowForKaons(gEllipticFlow);
139     toyModelAnalysis->SetTriangularFlowForKaons(gTriangularFlow);
140     toyModelAnalysis->SetQuandrangularFlowForKaons(gQuandrangularFlow);
141     toyModelAnalysis->SetPentangularFlowForKaons(gPentangularFlow);
142
143     //Protons
144     toyModelAnalysis->SetProtonPercentage(gProtonPercentage);
145     toyModelAnalysis->SetSpectraTemperatureForProtons(gProtonTemperature);
146     toyModelAnalysis->SetDirectedFlowForProtons(gDirectedFlow);
147     toyModelAnalysis->SetEllipticFlowForProtons(gEllipticFlow);
148     toyModelAnalysis->SetTriangularFlowForProtons(gTriangularFlow);
149     toyModelAnalysis->SetQuandrangularFlowForProtons(gQuandrangularFlow);
150     toyModelAnalysis->SetPentangularFlowForProtons(gPentangularFlow);
151   }
152
153   //Jets
154   if(kUseJets)
155     toyModelAnalysis->SetUseJets();
156
157   //Dynamical correlations
158   if(kUseDynamicalCorrelations) 
159     toyModelAnalysis->SetCorrelationPercentage(gDynamicalCorrelationsPercentage);
160
161   //Acceptance filter
162   if(kUseAcceptanceFilter) {
163     TFile *gParamFile = TFile::Open(gAcceptanceFilterFile);
164     if((!gParamFile) || (!gParamFile->IsOpen())) {
165       Printf("File %s not found!!!",acceptanceFilename);
166       return;
167     }
168
169     TString gParamName;
170     for(Int_t iCentrality = 0; iCentrality < numberOfCentralityBins; iCentrality++) {
171       gParamName = "gParamCentrality0";//centrality 0-5%
172       TF1 *gParameterization = dynamic_cast<TF1 *>(gParamFile->Get(gParamName.Data()));
173     }
174     toyModelAnalysis->SetAcceptanceParameterization(gParameterization);
175   }
176
177   //Detector effects
178   if(kSimulateDetectorEffects) 
179     toyModelAnalysis->SimulateDetectorEffects();
180   if(fNumberOfInefficientSectors) {
181     toyModelAnalysis->SetNumberOfInefficientSectorsInPhi(fNumberOfInefficientSectors);
182     toyModelAnalysis->SetInefficiencyFactor(fInefficiencyFactorInPhi);
183   }
184   if(fNumberOfDeadSectors)
185     toyModelAnalysis->SetNumberOfDeadSectorsInPhi(fNumberOfDeadSectors);
186   if(fEfficiencyDropNearEtaEdges)
187     toyModelAnalysis->EnableEfficiencyDropNearEtaEdges();
188
189   //Initialize and run
190   toyModelAnalysis->Init();
191   toyModelAnalysis->CreateOutputObjects();
192   toyModelAnalysis->Run(nEvents);
193   toyModelAnalysis->FinishOutput();
194
195   // Print real and CPU time used for analysis:  
196   timer.Stop();
197   timer.Print();
198 }
199