ROOT logo
//
// General macro to configure the RSN analysis task.
// It calls all configs desired by the user, by means
// of the boolean switches defined in the first lines.
// ---
// Inputs:
//  1) flag to know if running on MC or data
//  2) path where all configs are stored
// ---
// Returns:
//  kTRUE  --> initialization successful
//  kFALSE --> initialization failed (some config gave errors)
//

Bool_t usePhi   = kTRUE;
Bool_t isESD = kTRUE;
const char *suffix = "noPID";

AliRsnMiniAnalysisTask * AddAnalysisTaskPhiRAAPbPb
(
   Bool_t      isMC,
   Bool_t      isPP,
   const char *path,
   Int_t       nmix = 0,
   Int_t       centr = 3
)
{
   //
   // -- INITIALIZATION ----------------------------------------------------------------------------
   //

   // retrieve analysis manager
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   // create the task and connect with physics selection
   AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask("RSN", isMC);
   if (centr == 1)   task->UseESDTriggerMask(AliVEvent::kCentral);
   if (centr == 2)   task->UseESDTriggerMask(AliVEvent::kSemiCentral);
   if (centr == 3)   task->UseESDTriggerMask(AliVEvent::kMB);

   mgr->AddTask(task);

   // settings
   if (isPP)
      task->UseMultiplicity("QUALITY");
   else
      task->UseCentrality("V0M");

//   // set mixing
   task->UseContinuousMix();
//   //task->UseBinnedMix();
   task->SetNMix(nmix);
   task->SetMaxDiffVz(1.0);
   task->SetMaxDiffMult(10.0);
   task->SetMaxDiffAngle(1E20);

   //
   // -- EVENT CUTS (same for all configs) ---------------------------------------------------------
   //

   // cut on primary vertex:
   // - 2nd argument --> |Vz| range
   // - 3rd argument --> minimum required number of contributors
   // - 4th argument --> tells if TPC stand-alone vertexes must be accepted
   AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 10.0, 0, kFALSE);

   // set the check for pileup
   if (isPP) cutVertex->SetCheckPileUp(kTRUE);

   // define and fill cut set
   AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent);
   eventCuts->AddCut(cutVertex);
   eventCuts->SetCutScheme(cutVertex->GetName());

   // set cuts in task
   task->SetEventCuts(eventCuts);

   //
   // -- EVENT-ONLY COMPUTATIONS -------------------------------------------------------------------
   //

   // initialize value computation for multiplicity/centrality
   // second argument tells if the value must be taken from MC
   // (when this can be done)
   // after creating the value, the task returns its ID
   Int_t multID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);

   // create event-related output
   AliRsnMiniOutput *outMult = task->CreateOutput("eventMult", "HIST", "EVENT");
   // set axes, by passing value ID and defining the binning
   if (isPP)
      outMult->AddAxis(multID, 300, 0.0, 300.0);
   else
      outMult->AddAxis(multID, 100, 0.0, 100.0);

   //
   // -- PAIR CUTS (common to all resonances) ------------------------------------------------------
   //

   AliRsnCutMiniPair *cutY = new AliRsnCutMiniPair("cutRapidity", AliRsnCutMiniPair::kRapidityRange);
   cutY->SetRangeD(-0.5, 0.5);

   AliRsnCutSet *cutsPair = new AliRsnCutSet("pairCuts", AliRsnTarget::kMother);
   cutsPair->AddCut(cutY);
   cutsPair->SetCutScheme(cutY->GetName());

   //
   // -- CONFIGS -----------------------------------------------------------------------------------
   //

   if (usePhi) {
      gROOT->LoadMacro(Form("%s/ConfigPhiRAAPbPb.C", path));
      ConfigPhiRAAPbPb(task, isMC, isESD, suffix, cutsPair, centr);
   }

   //
   // -- CONTAINERS --------------------------------------------------------------------------------
   //

   const char *file = AliAnalysisManager::GetCommonFileName();
   AliAnalysisDataContainer *output = mgr->CreateContainer("RsnOut", TList::Class(), AliAnalysisManager::kOutputContainer, file);
   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(task, 1, output);

   return task;
}
 AddAnalysisTaskPhiRAAPbPb.C:1
 AddAnalysisTaskPhiRAAPbPb.C:2
 AddAnalysisTaskPhiRAAPbPb.C:3
 AddAnalysisTaskPhiRAAPbPb.C:4
 AddAnalysisTaskPhiRAAPbPb.C:5
 AddAnalysisTaskPhiRAAPbPb.C:6
 AddAnalysisTaskPhiRAAPbPb.C:7
 AddAnalysisTaskPhiRAAPbPb.C:8
 AddAnalysisTaskPhiRAAPbPb.C:9
 AddAnalysisTaskPhiRAAPbPb.C:10
 AddAnalysisTaskPhiRAAPbPb.C:11
 AddAnalysisTaskPhiRAAPbPb.C:12
 AddAnalysisTaskPhiRAAPbPb.C:13
 AddAnalysisTaskPhiRAAPbPb.C:14
 AddAnalysisTaskPhiRAAPbPb.C:15
 AddAnalysisTaskPhiRAAPbPb.C:16
 AddAnalysisTaskPhiRAAPbPb.C:17
 AddAnalysisTaskPhiRAAPbPb.C:18
 AddAnalysisTaskPhiRAAPbPb.C:19
 AddAnalysisTaskPhiRAAPbPb.C:20
 AddAnalysisTaskPhiRAAPbPb.C:21
 AddAnalysisTaskPhiRAAPbPb.C:22
 AddAnalysisTaskPhiRAAPbPb.C:23
 AddAnalysisTaskPhiRAAPbPb.C:24
 AddAnalysisTaskPhiRAAPbPb.C:25
 AddAnalysisTaskPhiRAAPbPb.C:26
 AddAnalysisTaskPhiRAAPbPb.C:27
 AddAnalysisTaskPhiRAAPbPb.C:28
 AddAnalysisTaskPhiRAAPbPb.C:29
 AddAnalysisTaskPhiRAAPbPb.C:30
 AddAnalysisTaskPhiRAAPbPb.C:31
 AddAnalysisTaskPhiRAAPbPb.C:32
 AddAnalysisTaskPhiRAAPbPb.C:33
 AddAnalysisTaskPhiRAAPbPb.C:34
 AddAnalysisTaskPhiRAAPbPb.C:35
 AddAnalysisTaskPhiRAAPbPb.C:36
 AddAnalysisTaskPhiRAAPbPb.C:37
 AddAnalysisTaskPhiRAAPbPb.C:38
 AddAnalysisTaskPhiRAAPbPb.C:39
 AddAnalysisTaskPhiRAAPbPb.C:40
 AddAnalysisTaskPhiRAAPbPb.C:41
 AddAnalysisTaskPhiRAAPbPb.C:42
 AddAnalysisTaskPhiRAAPbPb.C:43
 AddAnalysisTaskPhiRAAPbPb.C:44
 AddAnalysisTaskPhiRAAPbPb.C:45
 AddAnalysisTaskPhiRAAPbPb.C:46
 AddAnalysisTaskPhiRAAPbPb.C:47
 AddAnalysisTaskPhiRAAPbPb.C:48
 AddAnalysisTaskPhiRAAPbPb.C:49
 AddAnalysisTaskPhiRAAPbPb.C:50
 AddAnalysisTaskPhiRAAPbPb.C:51
 AddAnalysisTaskPhiRAAPbPb.C:52
 AddAnalysisTaskPhiRAAPbPb.C:53
 AddAnalysisTaskPhiRAAPbPb.C:54
 AddAnalysisTaskPhiRAAPbPb.C:55
 AddAnalysisTaskPhiRAAPbPb.C:56
 AddAnalysisTaskPhiRAAPbPb.C:57
 AddAnalysisTaskPhiRAAPbPb.C:58
 AddAnalysisTaskPhiRAAPbPb.C:59
 AddAnalysisTaskPhiRAAPbPb.C:60
 AddAnalysisTaskPhiRAAPbPb.C:61
 AddAnalysisTaskPhiRAAPbPb.C:62
 AddAnalysisTaskPhiRAAPbPb.C:63
 AddAnalysisTaskPhiRAAPbPb.C:64
 AddAnalysisTaskPhiRAAPbPb.C:65
 AddAnalysisTaskPhiRAAPbPb.C:66
 AddAnalysisTaskPhiRAAPbPb.C:67
 AddAnalysisTaskPhiRAAPbPb.C:68
 AddAnalysisTaskPhiRAAPbPb.C:69
 AddAnalysisTaskPhiRAAPbPb.C:70
 AddAnalysisTaskPhiRAAPbPb.C:71
 AddAnalysisTaskPhiRAAPbPb.C:72
 AddAnalysisTaskPhiRAAPbPb.C:73
 AddAnalysisTaskPhiRAAPbPb.C:74
 AddAnalysisTaskPhiRAAPbPb.C:75
 AddAnalysisTaskPhiRAAPbPb.C:76
 AddAnalysisTaskPhiRAAPbPb.C:77
 AddAnalysisTaskPhiRAAPbPb.C:78
 AddAnalysisTaskPhiRAAPbPb.C:79
 AddAnalysisTaskPhiRAAPbPb.C:80
 AddAnalysisTaskPhiRAAPbPb.C:81
 AddAnalysisTaskPhiRAAPbPb.C:82
 AddAnalysisTaskPhiRAAPbPb.C:83
 AddAnalysisTaskPhiRAAPbPb.C:84
 AddAnalysisTaskPhiRAAPbPb.C:85
 AddAnalysisTaskPhiRAAPbPb.C:86
 AddAnalysisTaskPhiRAAPbPb.C:87
 AddAnalysisTaskPhiRAAPbPb.C:88
 AddAnalysisTaskPhiRAAPbPb.C:89
 AddAnalysisTaskPhiRAAPbPb.C:90
 AddAnalysisTaskPhiRAAPbPb.C:91
 AddAnalysisTaskPhiRAAPbPb.C:92
 AddAnalysisTaskPhiRAAPbPb.C:93
 AddAnalysisTaskPhiRAAPbPb.C:94
 AddAnalysisTaskPhiRAAPbPb.C:95
 AddAnalysisTaskPhiRAAPbPb.C:96
 AddAnalysisTaskPhiRAAPbPb.C:97
 AddAnalysisTaskPhiRAAPbPb.C:98
 AddAnalysisTaskPhiRAAPbPb.C:99
 AddAnalysisTaskPhiRAAPbPb.C:100
 AddAnalysisTaskPhiRAAPbPb.C:101
 AddAnalysisTaskPhiRAAPbPb.C:102
 AddAnalysisTaskPhiRAAPbPb.C:103
 AddAnalysisTaskPhiRAAPbPb.C:104
 AddAnalysisTaskPhiRAAPbPb.C:105
 AddAnalysisTaskPhiRAAPbPb.C:106
 AddAnalysisTaskPhiRAAPbPb.C:107
 AddAnalysisTaskPhiRAAPbPb.C:108
 AddAnalysisTaskPhiRAAPbPb.C:109
 AddAnalysisTaskPhiRAAPbPb.C:110
 AddAnalysisTaskPhiRAAPbPb.C:111
 AddAnalysisTaskPhiRAAPbPb.C:112
 AddAnalysisTaskPhiRAAPbPb.C:113
 AddAnalysisTaskPhiRAAPbPb.C:114
 AddAnalysisTaskPhiRAAPbPb.C:115
 AddAnalysisTaskPhiRAAPbPb.C:116
 AddAnalysisTaskPhiRAAPbPb.C:117
 AddAnalysisTaskPhiRAAPbPb.C:118
 AddAnalysisTaskPhiRAAPbPb.C:119
 AddAnalysisTaskPhiRAAPbPb.C:120
 AddAnalysisTaskPhiRAAPbPb.C:121
 AddAnalysisTaskPhiRAAPbPb.C:122
 AddAnalysisTaskPhiRAAPbPb.C:123
 AddAnalysisTaskPhiRAAPbPb.C:124
 AddAnalysisTaskPhiRAAPbPb.C:125
 AddAnalysisTaskPhiRAAPbPb.C:126