ROOT logo
// AliFemtoSplittingMergingQA.C - macro to create the splitting/merging
// test with the pion correlation function.
// As a default the anti-splitting and anti-merging cuts are open
// and the two correlation functions:
// AliFemtoShareQualityCorrFctn and AliFemtoTPCInnerCorrFctn 
// can be used to study the splitting (former) and merging (latter) effect
// If ones needs to produce a "clean" sample with both effects removed, 
// one needs to change the cut values to the "reasonable" ones, or perform
// the full systematic analysis with the above-mentioned functions 

// Author: Adam Kisiel. Adam.Kisiel@cern.ch

// parameters:
// listFileName - a text file containing a list of ESDs (with full paths) 
// to analyze
void AliFemtoSplittingMergingQA(const char *listFileName)
{
  double PionMass = 0.13956995;
  double chargePi = 1.0;
  
  // Load the neccessary libraries
  gSystem->Load("libTree");
  gSystem->Load("libGeom");
  gSystem->Load("libEG");
  gSystem->Load("libCint");
  gSystem->Load("libESD");
  gSystem->Load("libPWG2femtoscopy");
  gSystem->Load("libPWG2femtoscopyUser");

  // Set-up the reader for ALICE ESD
  AliFemtoEventReaderESD* Reader=new AliFemtoEventReaderESD();
  // Read only constrained momenta - primordial particles
  Reader->SetConstrained(true);
  Reader->SetReadTPCInner(true);
  // Read the file list from the filename supplied by the user
  Reader->SetInputFile(listFileName);
  
  // Setup the manager 
  AliFemtoManager* Manager=new AliFemtoManager();
  // Point to the data source - the reader
  Manager->SetEventReader(Reader);
  
  // Setup the analysis
  AliFemtoSimpleAnalysis* an =new AliFemtoSimpleAnalysis();
  // Number of events to construct the background
  an->SetNumEventsToMix(3);

  // The event selector
  AliFemtoBasicEventCut* mec = new AliFemtoBasicEventCut();
  // Accept events with the given multiplicity
  mec->SetEventMult(0,100000);
  // and z-vertex distance to the center of the TPC
  mec->SetVertZPos(-1000,1000);
	
  // The track selector
  AliFemtoESDTrackCut* dtc = new AliFemtoESDTrackCut();
  // We want positive pions
  dtc->SetPidProbPion(0.2,1.001);
  dtc->SetPidProbMuon(0.0,0.8);
  dtc->SetPidProbKaon(0.0,0.1);
  dtc->SetPidProbProton(0.0,0.1);
  dtc->SetMostProbablePion();
  dtc->SetCharge(1.0);
  // so we set the correct mass
  dtc->SetMass(PionMass);
  // we select low pt
  dtc->SetPt(0.1,0.7);
  dtc->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
  dtc->SetminTPCncls(95);
  dtc->SetRemoveKinks(kTRUE);
  dtc->SetLabel(kFALSE);
  dtc->SetMaxITSChiNdof(3.0);
  dtc->SetMaxTPCChiNdof(2.0);
  dtc->SetMaxSigmaToVertex(3.0);

  AliFemtoCutMonitorParticleYPt *cutPass = new AliFemtoCutMonitorParticleYPt("cutPass", 0.13957);
  AliFemtoCutMonitorParticleYPt *cutFail = new AliFemtoCutMonitorParticleYPt("cutFail", 0.13957);
  dtc->AddCutMonitor(cutPass, cutFail);

  // Pair selector
  AliFemtoShareQualityTPCEntranceSepPairCut *sqpc = new AliFemtoShareQualityTPCEntranceSepPairCut();
  // remove split track pairs and pairs that share hits
  
  // Set maximim allowed "quality" for the pair
  //  1.0 - accept all pairs
  // -0.5 - reject all pairs
  // a reasonable value should lie between 0.0 and 0.5
  sqpc->SetShareQualityMax(1.0);

  // Set maximum allowed shared hits fraction per pair
  //  1.0 - accept all pairs
  //  0.0 - reject all pairs
  // a reasonable value is small but nno-zero (0.05)
  sqpc->SetShareFractionMax(1.0);

  // Set minimum allowed separation between nominal TPC entrance points
  // of the two tracks in the pair
  // 0.0 - accept all pairs
  // a reasonable value is 3.0 [cm]
  sqpc->SetTPCEntranceSepMinimum(0.0);
  sqpc->SetRemoveSameLabel(kFALSE);

  // Add the cuts to the analysis
  an->SetEventCut(mec);
  an->SetFirstParticleCut(dtc);
  an->SetSecondParticleCut(dtc);
  an->SetPairCut(sqpc);
  
  // Setup correlation functions
  // A simple qinv correlation function
  AliFemtoQinvCorrFctn *cqinv= new AliFemtoQinvCorrFctn("qinvcf",75,0.0,0.4);
  
  // A correlation function to monitor the splitting and cluster sharing in TPC
  AliFemtoShareQualityCorrFctn *csqqinv= new AliFemtoShareQualityCorrFctn("sqqinvcf",75,0.0,0.4);
  
  // A correlation function to monitor the distance at the entrance to the TPC
  AliFemtoTPCInnerCorrFctn *tpcin = new AliFemtoTPCInnerCorrFctn("tpcin",80, 0.0, 0.4);
  
  // add the correlation functions to the analysis
  an->AddCorrFctn(cqinv);
  an->AddCorrFctn(csqqinv);
  an->AddCorrFctn(tpcin);

  // Add the analysis to the manager
  Manager->AddAnalysis(an);	

  // Run the event loop
  long nE= 100000;
  if (Manager->Init())
    cout<<" Problem"<<endl;
	
  int Status=0;
  long int nEP=0;
  while ((!Status)&&(nEP<nE))
    {
      nEP++;
      cout<<" next event "<<nEP<<endl;
      Status=Manager->ProcessEvent();
    } 
	
  // Save the results
  char ofname[200];
  sprintf(ofname, "QinvCF.In.root");

  TFile f1 (ofname,"RECREATE","Data");
  cqinv->Numerator()->Write();
  cqinv->Denominator()->Write();
  csqqinv->WriteHistos();
  tpcin->WriteHistos();
  cutPass->Write();
  cutFail->Write();

  // Save the cut settings in the output file 
  f1.mkdir("Settings");
  f1.cd("Settings");
  
  TList *tListSettings = an->ListSettings();
  tListSettings->Write();

  f1.Close();

  TFile f2("Listout.root","RECREATE");
  TList *tOutList = an->GetOutputList();
  tOutList->Write();
}
 AliFemtoSplittingMergingQA.C:1
 AliFemtoSplittingMergingQA.C:2
 AliFemtoSplittingMergingQA.C:3
 AliFemtoSplittingMergingQA.C:4
 AliFemtoSplittingMergingQA.C:5
 AliFemtoSplittingMergingQA.C:6
 AliFemtoSplittingMergingQA.C:7
 AliFemtoSplittingMergingQA.C:8
 AliFemtoSplittingMergingQA.C:9
 AliFemtoSplittingMergingQA.C:10
 AliFemtoSplittingMergingQA.C:11
 AliFemtoSplittingMergingQA.C:12
 AliFemtoSplittingMergingQA.C:13
 AliFemtoSplittingMergingQA.C:14
 AliFemtoSplittingMergingQA.C:15
 AliFemtoSplittingMergingQA.C:16
 AliFemtoSplittingMergingQA.C:17
 AliFemtoSplittingMergingQA.C:18
 AliFemtoSplittingMergingQA.C:19
 AliFemtoSplittingMergingQA.C:20
 AliFemtoSplittingMergingQA.C:21
 AliFemtoSplittingMergingQA.C:22
 AliFemtoSplittingMergingQA.C:23
 AliFemtoSplittingMergingQA.C:24
 AliFemtoSplittingMergingQA.C:25
 AliFemtoSplittingMergingQA.C:26
 AliFemtoSplittingMergingQA.C:27
 AliFemtoSplittingMergingQA.C:28
 AliFemtoSplittingMergingQA.C:29
 AliFemtoSplittingMergingQA.C:30
 AliFemtoSplittingMergingQA.C:31
 AliFemtoSplittingMergingQA.C:32
 AliFemtoSplittingMergingQA.C:33
 AliFemtoSplittingMergingQA.C:34
 AliFemtoSplittingMergingQA.C:35
 AliFemtoSplittingMergingQA.C:36
 AliFemtoSplittingMergingQA.C:37
 AliFemtoSplittingMergingQA.C:38
 AliFemtoSplittingMergingQA.C:39
 AliFemtoSplittingMergingQA.C:40
 AliFemtoSplittingMergingQA.C:41
 AliFemtoSplittingMergingQA.C:42
 AliFemtoSplittingMergingQA.C:43
 AliFemtoSplittingMergingQA.C:44
 AliFemtoSplittingMergingQA.C:45
 AliFemtoSplittingMergingQA.C:46
 AliFemtoSplittingMergingQA.C:47
 AliFemtoSplittingMergingQA.C:48
 AliFemtoSplittingMergingQA.C:49
 AliFemtoSplittingMergingQA.C:50
 AliFemtoSplittingMergingQA.C:51
 AliFemtoSplittingMergingQA.C:52
 AliFemtoSplittingMergingQA.C:53
 AliFemtoSplittingMergingQA.C:54
 AliFemtoSplittingMergingQA.C:55
 AliFemtoSplittingMergingQA.C:56
 AliFemtoSplittingMergingQA.C:57
 AliFemtoSplittingMergingQA.C:58
 AliFemtoSplittingMergingQA.C:59
 AliFemtoSplittingMergingQA.C:60
 AliFemtoSplittingMergingQA.C:61
 AliFemtoSplittingMergingQA.C:62
 AliFemtoSplittingMergingQA.C:63
 AliFemtoSplittingMergingQA.C:64
 AliFemtoSplittingMergingQA.C:65
 AliFemtoSplittingMergingQA.C:66
 AliFemtoSplittingMergingQA.C:67
 AliFemtoSplittingMergingQA.C:68
 AliFemtoSplittingMergingQA.C:69
 AliFemtoSplittingMergingQA.C:70
 AliFemtoSplittingMergingQA.C:71
 AliFemtoSplittingMergingQA.C:72
 AliFemtoSplittingMergingQA.C:73
 AliFemtoSplittingMergingQA.C:74
 AliFemtoSplittingMergingQA.C:75
 AliFemtoSplittingMergingQA.C:76
 AliFemtoSplittingMergingQA.C:77
 AliFemtoSplittingMergingQA.C:78
 AliFemtoSplittingMergingQA.C:79
 AliFemtoSplittingMergingQA.C:80
 AliFemtoSplittingMergingQA.C:81
 AliFemtoSplittingMergingQA.C:82
 AliFemtoSplittingMergingQA.C:83
 AliFemtoSplittingMergingQA.C:84
 AliFemtoSplittingMergingQA.C:85
 AliFemtoSplittingMergingQA.C:86
 AliFemtoSplittingMergingQA.C:87
 AliFemtoSplittingMergingQA.C:88
 AliFemtoSplittingMergingQA.C:89
 AliFemtoSplittingMergingQA.C:90
 AliFemtoSplittingMergingQA.C:91
 AliFemtoSplittingMergingQA.C:92
 AliFemtoSplittingMergingQA.C:93
 AliFemtoSplittingMergingQA.C:94
 AliFemtoSplittingMergingQA.C:95
 AliFemtoSplittingMergingQA.C:96
 AliFemtoSplittingMergingQA.C:97
 AliFemtoSplittingMergingQA.C:98
 AliFemtoSplittingMergingQA.C:99
 AliFemtoSplittingMergingQA.C:100
 AliFemtoSplittingMergingQA.C:101
 AliFemtoSplittingMergingQA.C:102
 AliFemtoSplittingMergingQA.C:103
 AliFemtoSplittingMergingQA.C:104
 AliFemtoSplittingMergingQA.C:105
 AliFemtoSplittingMergingQA.C:106
 AliFemtoSplittingMergingQA.C:107
 AliFemtoSplittingMergingQA.C:108
 AliFemtoSplittingMergingQA.C:109
 AliFemtoSplittingMergingQA.C:110
 AliFemtoSplittingMergingQA.C:111
 AliFemtoSplittingMergingQA.C:112
 AliFemtoSplittingMergingQA.C:113
 AliFemtoSplittingMergingQA.C:114
 AliFemtoSplittingMergingQA.C:115
 AliFemtoSplittingMergingQA.C:116
 AliFemtoSplittingMergingQA.C:117
 AliFemtoSplittingMergingQA.C:118
 AliFemtoSplittingMergingQA.C:119
 AliFemtoSplittingMergingQA.C:120
 AliFemtoSplittingMergingQA.C:121
 AliFemtoSplittingMergingQA.C:122
 AliFemtoSplittingMergingQA.C:123
 AliFemtoSplittingMergingQA.C:124
 AliFemtoSplittingMergingQA.C:125
 AliFemtoSplittingMergingQA.C:126
 AliFemtoSplittingMergingQA.C:127
 AliFemtoSplittingMergingQA.C:128
 AliFemtoSplittingMergingQA.C:129
 AliFemtoSplittingMergingQA.C:130
 AliFemtoSplittingMergingQA.C:131
 AliFemtoSplittingMergingQA.C:132
 AliFemtoSplittingMergingQA.C:133
 AliFemtoSplittingMergingQA.C:134
 AliFemtoSplittingMergingQA.C:135
 AliFemtoSplittingMergingQA.C:136
 AliFemtoSplittingMergingQA.C:137
 AliFemtoSplittingMergingQA.C:138
 AliFemtoSplittingMergingQA.C:139
 AliFemtoSplittingMergingQA.C:140
 AliFemtoSplittingMergingQA.C:141
 AliFemtoSplittingMergingQA.C:142
 AliFemtoSplittingMergingQA.C:143
 AliFemtoSplittingMergingQA.C:144
 AliFemtoSplittingMergingQA.C:145
 AliFemtoSplittingMergingQA.C:146
 AliFemtoSplittingMergingQA.C:147
 AliFemtoSplittingMergingQA.C:148
 AliFemtoSplittingMergingQA.C:149
 AliFemtoSplittingMergingQA.C:150
 AliFemtoSplittingMergingQA.C:151
 AliFemtoSplittingMergingQA.C:152
 AliFemtoSplittingMergingQA.C:153
 AliFemtoSplittingMergingQA.C:154
 AliFemtoSplittingMergingQA.C:155
 AliFemtoSplittingMergingQA.C:156
 AliFemtoSplittingMergingQA.C:157
 AliFemtoSplittingMergingQA.C:158
 AliFemtoSplittingMergingQA.C:159
 AliFemtoSplittingMergingQA.C:160
 AliFemtoSplittingMergingQA.C:161
 AliFemtoSplittingMergingQA.C:162
 AliFemtoSplittingMergingQA.C:163
 AliFemtoSplittingMergingQA.C:164
 AliFemtoSplittingMergingQA.C:165
 AliFemtoSplittingMergingQA.C:166