ROOT logo
//=========Total multiplicity=========//
Double_t nTotalMultiplicityMean = 100.;
Double_t nTotalMultiplicitySigma = 10.;

//=========Net charge=========//
Double_t nNetChargeMean = 0.0;
Double_t nNetChargeSigma = 3.0;

//==============Particles and spectra==============//
//Double_t gAllChargesTemperature = 0.11; //in GeV
Double_t gAllChargesTemperature = 4.5; //not temperature==>modified hagedorn
Double_t gPionPercentage = 0.8;
Double_t gPionTemperature = 0.1; //in GeV
Double_t gKaonPercentage = 0.12;
Double_t gKaonTemperature = 0.12; //in GeV
Double_t gProtonPercentage = 0.08;
Double_t gProtonTemperature = 0.2; //in GeV
//==============Particles and spectra==============//

//==============Flow values==============//
Double_t gDirectedFlow = 0.0;
Double_t gEllipticFlow = 0.2;
Double_t gTriangularFlow = 0.0;
Double_t gQuandrangularFlow = 0.0;
Double_t gPentangularFlow = 0.0;
//==============Flow values==============//

//=========Acceptance definition=========//
Double_t gEtaMin = -1.0;
Double_t gEtaMax = 1.0;
Double_t gPtMin = 0.1;
Double_t gPtMax = 20.0;
//=========Acceptance definition=========//

//=========Acceptance filter=========//
Bool_t kUseAcceptanceFilter = kFALSE;
const char *gAcceptanceFilterFile = "efficiencyALICE.root";
//=========Acceptance filter=========//

//=========Detector effects=========//
Bool_t kSimulateDetectorEffects = kTRUE;
Int_t fNumberOfInefficientSectors = 5;//inefficient secotrs in phi
Double_t fInefficiencyFactorInPhi = 0.65;//efficiency factor < 1
Int_t fNumberOfDeadSectors = 3;//number of dead sectors
Bool_t fEfficiencyDropNearEtaEdges = kTRUE;//efficiency drop in eta edges
//=========Detector effects=========//

//=========Jets=========//
Bool_t kUseJets = kFALSE;
//=========Jets=========//

//=========Dynamical Correlations=========//
Bool_t kUseDynamicalCorrelations = kFALSE;
Double_t gDynamicalCorrelationsPercentage = 0.1;
//=========Dynamical Correlations=========//

//=========bf object configuration=========//
Bool_t kRunShuffling = kFALSE;
Bool_t kRunMixing = kTRUE;
Bool_t bResonancesCut = kFALSE;
Bool_t bHBTcut = kFALSE;
Bool_t bConversionCut = kFALSE;
Bool_t bMomentumDifferenceCut = kFALSE;
TString fArgEventClass = "EventPlane";
Double_t deltaEtaMax = TMath::Abs(gEtaMax-gEtaMin);
Bool_t bVertexBinning = kFALSE;
//=========bf object configuration=========//

//=========Debug option=========//
Bool_t kUseDebug = kFALSE;
//=========Debug option=========//

// Run macro used for the toy model analysis
// Author: Panos.Christakoglou@nikhef.nl

//____________________________________________________________________
void runBalanceFunctionToyModel(Int_t nEvents = 10,
				Bool_t kUseAllCharges = kTRUE) {
  TStopwatch timer;
  timer.Start();

  // load libraries
  gSystem->Load("libCore.so");        
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
  gSystem->Load("libTree.so");

  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libAOD");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libEventMixing.so");
  gSystem->Load("libCORRFW");
  gSystem->Load("libPWGTools");
  gSystem->Load("libPWGCFebye");

  //configure the bf objects
  gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/configBalanceFunctionPsiAnalysis.C");
  AliBalancePsi *bf  = GetBalanceFunctionObject("MC","",0,100,kRunShuffling,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);
  AliBalancePsi *bfm = 0x0;
  if(kRunMixing) 
    bfm = GetBalanceFunctionObject("MC","",0,100,kRunShuffling,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);
  
  //Configure the toy model object
  AliAnalysisTaskToyModel *toyModelAnalysis = new AliAnalysisTaskToyModel();
  if(kUseDebug) toyModelAnalysis->SetDebugFlag();
  toyModelAnalysis->SetAnalysisObject(bf);
  if(kRunMixing)
    toyModelAnalysis->SetMixingObject(bfm);
  toyModelAnalysis->SetTotalMultiplicity(nTotalMultiplicityMean,nTotalMultiplicitySigma);
  toyModelAnalysis->SetNetCharge(nNetChargeMean,nNetChargeSigma);
  toyModelAnalysis->SetKinematicsCutsMC(gPtMin,gPtMax,gEtaMin,gEtaMax);

  if(kUseAllCharges) {
    toyModelAnalysis->SetSpectraTemperatureForAllCharges(gAllChargesTemperature);
    toyModelAnalysis->SetDirectedFlowForAllCharges(gDirectedFlow);
    toyModelAnalysis->SetEllipticFlowForAllCharges(gEllipticFlow);
    toyModelAnalysis->SetTriangularFlowForAllCharges(gTriangularFlow);
    toyModelAnalysis->SetQuandrangularFlowForAllCharges(gQuandrangularFlow);
    toyModelAnalysis->SetPentangularFlowForAllCharges(gPentangularFlow);
  }
  else {
    //Pions
    toyModelAnalysis->SetPionPercentage(gPionPercentage);
    toyModelAnalysis->SetSpectraTemperatureForPions(gPionTemperature);
    toyModelAnalysis->SetDirectedFlowForPions(gDirectedFlow);
    toyModelAnalysis->SetEllipticFlowForPions(gEllipticFlow);
    toyModelAnalysis->SetTriangularFlowForPions(gTriangularFlow);
    toyModelAnalysis->SetQuandrangularFlowForPions(gQuandrangularFlow);
    toyModelAnalysis->SetPentangularFlowForPions(gPentangularFlow);

    //Kaons
    toyModelAnalysis->SetKaonPercentage(gKaonPercentage);
    toyModelAnalysis->SetSpectraTemperatureForKaons(gKaonTemperature);
    toyModelAnalysis->SetDirectedFlowForKaons(gDirectedFlow);
    toyModelAnalysis->SetEllipticFlowForKaons(gEllipticFlow);
    toyModelAnalysis->SetTriangularFlowForKaons(gTriangularFlow);
    toyModelAnalysis->SetQuandrangularFlowForKaons(gQuandrangularFlow);
    toyModelAnalysis->SetPentangularFlowForKaons(gPentangularFlow);

    //Protons
    toyModelAnalysis->SetProtonPercentage(gProtonPercentage);
    toyModelAnalysis->SetSpectraTemperatureForProtons(gProtonTemperature);
    toyModelAnalysis->SetDirectedFlowForProtons(gDirectedFlow);
    toyModelAnalysis->SetEllipticFlowForProtons(gEllipticFlow);
    toyModelAnalysis->SetTriangularFlowForProtons(gTriangularFlow);
    toyModelAnalysis->SetQuandrangularFlowForProtons(gQuandrangularFlow);
    toyModelAnalysis->SetPentangularFlowForProtons(gPentangularFlow);
  }

  //Jets
  if(kUseJets)
    toyModelAnalysis->SetUseJets();

  //Dynamical correlations
  if(kUseDynamicalCorrelations) 
    toyModelAnalysis->SetCorrelationPercentage(gDynamicalCorrelationsPercentage);

  //Acceptance filter
  if(kUseAcceptanceFilter) {
    TFile *gParamFile = TFile::Open(gAcceptanceFilterFile);
    if((!gParamFile) || (!gParamFile->IsOpen())) {
      Printf("File %s not found!!!",acceptanceFilename);
      return;
    }

    TString gParamName;
    for(Int_t iCentrality = 0; iCentrality < numberOfCentralityBins; iCentrality++) {
      gParamName = "gParamCentrality0";//centrality 0-5%
      TF1 *gParameterization = dynamic_cast<TF1 *>(gParamFile->Get(gParamName.Data()));
    }
    toyModelAnalysis->SetAcceptanceParameterization(gParameterization);
  }

  //Detector effects
  if(kSimulateDetectorEffects) 
    toyModelAnalysis->SimulateDetectorEffects();
  if(fNumberOfInefficientSectors) {
    toyModelAnalysis->SetNumberOfInefficientSectorsInPhi(fNumberOfInefficientSectors);
    toyModelAnalysis->SetInefficiencyFactor(fInefficiencyFactorInPhi);
  }
  if(fNumberOfDeadSectors)
    toyModelAnalysis->SetNumberOfDeadSectorsInPhi(fNumberOfDeadSectors);
  if(fEfficiencyDropNearEtaEdges)
    toyModelAnalysis->EnableEfficiencyDropNearEtaEdges();

  //Initialize and run
  toyModelAnalysis->Init();
  toyModelAnalysis->CreateOutputObjects();
  toyModelAnalysis->Run(nEvents);
  toyModelAnalysis->FinishOutput();

  // Print real and CPU time used for analysis:  
  timer.Stop();
  timer.Print();
}

 runBalanceFunctionToyModel.C:1
 runBalanceFunctionToyModel.C:2
 runBalanceFunctionToyModel.C:3
 runBalanceFunctionToyModel.C:4
 runBalanceFunctionToyModel.C:5
 runBalanceFunctionToyModel.C:6
 runBalanceFunctionToyModel.C:7
 runBalanceFunctionToyModel.C:8
 runBalanceFunctionToyModel.C:9
 runBalanceFunctionToyModel.C:10
 runBalanceFunctionToyModel.C:11
 runBalanceFunctionToyModel.C:12
 runBalanceFunctionToyModel.C:13
 runBalanceFunctionToyModel.C:14
 runBalanceFunctionToyModel.C:15
 runBalanceFunctionToyModel.C:16
 runBalanceFunctionToyModel.C:17
 runBalanceFunctionToyModel.C:18
 runBalanceFunctionToyModel.C:19
 runBalanceFunctionToyModel.C:20
 runBalanceFunctionToyModel.C:21
 runBalanceFunctionToyModel.C:22
 runBalanceFunctionToyModel.C:23
 runBalanceFunctionToyModel.C:24
 runBalanceFunctionToyModel.C:25
 runBalanceFunctionToyModel.C:26
 runBalanceFunctionToyModel.C:27
 runBalanceFunctionToyModel.C:28
 runBalanceFunctionToyModel.C:29
 runBalanceFunctionToyModel.C:30
 runBalanceFunctionToyModel.C:31
 runBalanceFunctionToyModel.C:32
 runBalanceFunctionToyModel.C:33
 runBalanceFunctionToyModel.C:34
 runBalanceFunctionToyModel.C:35
 runBalanceFunctionToyModel.C:36
 runBalanceFunctionToyModel.C:37
 runBalanceFunctionToyModel.C:38
 runBalanceFunctionToyModel.C:39
 runBalanceFunctionToyModel.C:40
 runBalanceFunctionToyModel.C:41
 runBalanceFunctionToyModel.C:42
 runBalanceFunctionToyModel.C:43
 runBalanceFunctionToyModel.C:44
 runBalanceFunctionToyModel.C:45
 runBalanceFunctionToyModel.C:46
 runBalanceFunctionToyModel.C:47
 runBalanceFunctionToyModel.C:48
 runBalanceFunctionToyModel.C:49
 runBalanceFunctionToyModel.C:50
 runBalanceFunctionToyModel.C:51
 runBalanceFunctionToyModel.C:52
 runBalanceFunctionToyModel.C:53
 runBalanceFunctionToyModel.C:54
 runBalanceFunctionToyModel.C:55
 runBalanceFunctionToyModel.C:56
 runBalanceFunctionToyModel.C:57
 runBalanceFunctionToyModel.C:58
 runBalanceFunctionToyModel.C:59
 runBalanceFunctionToyModel.C:60
 runBalanceFunctionToyModel.C:61
 runBalanceFunctionToyModel.C:62
 runBalanceFunctionToyModel.C:63
 runBalanceFunctionToyModel.C:64
 runBalanceFunctionToyModel.C:65
 runBalanceFunctionToyModel.C:66
 runBalanceFunctionToyModel.C:67
 runBalanceFunctionToyModel.C:68
 runBalanceFunctionToyModel.C:69
 runBalanceFunctionToyModel.C:70
 runBalanceFunctionToyModel.C:71
 runBalanceFunctionToyModel.C:72
 runBalanceFunctionToyModel.C:73
 runBalanceFunctionToyModel.C:74
 runBalanceFunctionToyModel.C:75
 runBalanceFunctionToyModel.C:76
 runBalanceFunctionToyModel.C:77
 runBalanceFunctionToyModel.C:78
 runBalanceFunctionToyModel.C:79
 runBalanceFunctionToyModel.C:80
 runBalanceFunctionToyModel.C:81
 runBalanceFunctionToyModel.C:82
 runBalanceFunctionToyModel.C:83
 runBalanceFunctionToyModel.C:84
 runBalanceFunctionToyModel.C:85
 runBalanceFunctionToyModel.C:86
 runBalanceFunctionToyModel.C:87
 runBalanceFunctionToyModel.C:88
 runBalanceFunctionToyModel.C:89
 runBalanceFunctionToyModel.C:90
 runBalanceFunctionToyModel.C:91
 runBalanceFunctionToyModel.C:92
 runBalanceFunctionToyModel.C:93
 runBalanceFunctionToyModel.C:94
 runBalanceFunctionToyModel.C:95
 runBalanceFunctionToyModel.C:96
 runBalanceFunctionToyModel.C:97
 runBalanceFunctionToyModel.C:98
 runBalanceFunctionToyModel.C:99
 runBalanceFunctionToyModel.C:100
 runBalanceFunctionToyModel.C:101
 runBalanceFunctionToyModel.C:102
 runBalanceFunctionToyModel.C:103
 runBalanceFunctionToyModel.C:104
 runBalanceFunctionToyModel.C:105
 runBalanceFunctionToyModel.C:106
 runBalanceFunctionToyModel.C:107
 runBalanceFunctionToyModel.C:108
 runBalanceFunctionToyModel.C:109
 runBalanceFunctionToyModel.C:110
 runBalanceFunctionToyModel.C:111
 runBalanceFunctionToyModel.C:112
 runBalanceFunctionToyModel.C:113
 runBalanceFunctionToyModel.C:114
 runBalanceFunctionToyModel.C:115
 runBalanceFunctionToyModel.C:116
 runBalanceFunctionToyModel.C:117
 runBalanceFunctionToyModel.C:118
 runBalanceFunctionToyModel.C:119
 runBalanceFunctionToyModel.C:120
 runBalanceFunctionToyModel.C:121
 runBalanceFunctionToyModel.C:122
 runBalanceFunctionToyModel.C:123
 runBalanceFunctionToyModel.C:124
 runBalanceFunctionToyModel.C:125
 runBalanceFunctionToyModel.C:126
 runBalanceFunctionToyModel.C:127
 runBalanceFunctionToyModel.C:128
 runBalanceFunctionToyModel.C:129
 runBalanceFunctionToyModel.C:130
 runBalanceFunctionToyModel.C:131
 runBalanceFunctionToyModel.C:132
 runBalanceFunctionToyModel.C:133
 runBalanceFunctionToyModel.C:134
 runBalanceFunctionToyModel.C:135
 runBalanceFunctionToyModel.C:136
 runBalanceFunctionToyModel.C:137
 runBalanceFunctionToyModel.C:138
 runBalanceFunctionToyModel.C:139
 runBalanceFunctionToyModel.C:140
 runBalanceFunctionToyModel.C:141
 runBalanceFunctionToyModel.C:142
 runBalanceFunctionToyModel.C:143
 runBalanceFunctionToyModel.C:144
 runBalanceFunctionToyModel.C:145
 runBalanceFunctionToyModel.C:146
 runBalanceFunctionToyModel.C:147
 runBalanceFunctionToyModel.C:148
 runBalanceFunctionToyModel.C:149
 runBalanceFunctionToyModel.C:150
 runBalanceFunctionToyModel.C:151
 runBalanceFunctionToyModel.C:152
 runBalanceFunctionToyModel.C:153
 runBalanceFunctionToyModel.C:154
 runBalanceFunctionToyModel.C:155
 runBalanceFunctionToyModel.C:156
 runBalanceFunctionToyModel.C:157
 runBalanceFunctionToyModel.C:158
 runBalanceFunctionToyModel.C:159
 runBalanceFunctionToyModel.C:160
 runBalanceFunctionToyModel.C:161
 runBalanceFunctionToyModel.C:162
 runBalanceFunctionToyModel.C:163
 runBalanceFunctionToyModel.C:164
 runBalanceFunctionToyModel.C:165
 runBalanceFunctionToyModel.C:166
 runBalanceFunctionToyModel.C:167
 runBalanceFunctionToyModel.C:168
 runBalanceFunctionToyModel.C:169
 runBalanceFunctionToyModel.C:170
 runBalanceFunctionToyModel.C:171
 runBalanceFunctionToyModel.C:172
 runBalanceFunctionToyModel.C:173
 runBalanceFunctionToyModel.C:174
 runBalanceFunctionToyModel.C:175
 runBalanceFunctionToyModel.C:176
 runBalanceFunctionToyModel.C:177
 runBalanceFunctionToyModel.C:178
 runBalanceFunctionToyModel.C:179
 runBalanceFunctionToyModel.C:180
 runBalanceFunctionToyModel.C:181
 runBalanceFunctionToyModel.C:182
 runBalanceFunctionToyModel.C:183
 runBalanceFunctionToyModel.C:184
 runBalanceFunctionToyModel.C:185
 runBalanceFunctionToyModel.C:186
 runBalanceFunctionToyModel.C:187
 runBalanceFunctionToyModel.C:188
 runBalanceFunctionToyModel.C:189
 runBalanceFunctionToyModel.C:190
 runBalanceFunctionToyModel.C:191
 runBalanceFunctionToyModel.C:192
 runBalanceFunctionToyModel.C:193
 runBalanceFunctionToyModel.C:194
 runBalanceFunctionToyModel.C:195
 runBalanceFunctionToyModel.C:196
 runBalanceFunctionToyModel.C:197
 runBalanceFunctionToyModel.C:198
 runBalanceFunctionToyModel.C:199
 runBalanceFunctionToyModel.C:200