ROOT logo
/***************************************************************************
              fbellini@cern.ch - last modified on 28/11/2013
//
//Lauches KStar analysis with rsn mini package
//Allows basic configuration of pile-up check and event cuts
//
****************************************************************************/
enum pairYCutSet { kPairDefault=0,
		   kCentral //=1
                 };

enum eventCutSet { kEvtDefault=0,
		   kNoPileUpCut, //=1
		   kDefaultVtx12,//=2
		   kDefaultVtx8, //=3
		   kDefaultVtx5, //=4                    
		   kMCEvtDefault //=5
                 };

enum eventMixConfig { kDisabled = -1,
		      kMixDefault,//=0 //10 events, Dvz = 1cm, DC = 10
		      k5Evts, //=1 //5 events, Dvz = 1cm, DC = 10
		      k5Cent,  //=2 //10 events, Dvz = 1cm, DC = 5
                    };


AliRsnMiniAnalysisTask * AddTaskKStarPP7TeV
(
 Bool_t      isMC = kFALSE,
 Bool_t      isPP = kTRUE,
 TString     outNameSuffix = "tpc2stof3sveto",
 Int_t       evtCutSetID = 0,
 Int_t       pairCutSetID = 0,
 Int_t       mixingConfigID = 0,
 Int_t       aodFilterBit = 5,
 Int_t       customQualityCutsID = -1,
 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutPiCandidate = AliRsnCutSetDaughterParticle::kTPCpidTOFveto3s,
 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutKaCandidate = AliRsnCutSetDaughterParticle::kTPCpidTOFveto3s,
 Float_t     nsigmaPi = 2.0,
 Float_t     nsigmaKa = 2.0,
 Bool_t      enableMonitor = kTRUE,
 Bool_t      IsMcTrueOnly = kFALSE,
 TString     monitorOpt = "NoSIGN",
 Bool_t      useMixLS = 0,
 Bool_t      checkReflex = 0,
 AliRsnMiniValue::EType yaxisvar = AliRsnMiniValue::kPt
)
{  

  
  //-------------------------------------------
  // event cuts
  //-------------------------------------------
  UInt_t      triggerMask = AliVEvent::kMB;
  Bool_t      rejectPileUp = kTRUE; //
  Double_t    vtxZcut = 10.0; //cm, default cut on vtx z
  
  if (evtCutSetID==eventCutSet::kDefaultVtx12){
    vtxZcut = 12.0; //cm
  } 

  if (evtCutSetID==eventCutSet::kDefaultVtx8){
    vtxZcut = 8.0; //cm
  } 
  
  if (evtCutSetID==eventCutSet::kDefaultVtx5){
    vtxZcut = 5.0; //cm
  }
    
  if (evtCutSetID==eventCutSet::kNoPileUpCut){
    rejectPileUp=kFALSE;
  }

  //-------------------------------------------
  //pair cuts
  //-------------------------------------------
  Double_t    minYlab =  -0.5;
  Double_t    maxYlab =  0.5;
  
  if (pairCutSetID==pairYCutSet::kCentral) { //|y_cm|<0.3
    minYlab = -0.3;    maxYlab = 0.3;
  }

  //-------------------------------------------
  //mixing settings
  //-------------------------------------------
  Int_t       nmix = 0;
  Float_t     maxDiffVzMix = 1.0;
  Float_t     maxDiffMultMix = 10.0;
  
  if (mixingConfigID == eventMixConfig::kMixDefault) {
    nmix = 10;
  }

  if (mixingConfigID == eventMixConfig::k5Evts) {
    nmix = 5;
  }
  
  if (mixingConfigID == eventMixConfig::k5Cent) {
    maxDiffMultMix = 5;
  }

  //
  // -- INITIALIZATION ----------------------------------------------------------------------------
  // retrieve analysis manager
  //
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
      ::Error("AddAnalysisTaskTOFKStar", "No analysis manager to connect to.");
      return NULL;
   } 

   // create the task and configure 
   TString taskName = Form("TOFKStar%s%s_%i%i", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"), (Int_t)cutPiCandidate,(Int_t)cutKaCandidate );
   AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC);
   //task->UseESDTriggerMask(triggerMask); //ESD
   task->SelectCollisionCandidates(triggerMask); //AOD
   
   if (isPP) 
     task->UseMultiplicity("QUALITY");
   else
     task->UseCentrality("V0M");   
   // set event mixing options
   task->UseContinuousMix();
   //task->UseBinnedMix();
   task->SetNMix(nmix);
   task->SetMaxDiffVz(maxDiffVzMix);
   task->SetMaxDiffMult(maxDiffMultMix);
   ::Info("AddAnalysisTaskTOFKStar", Form("Event mixing configuration: \n events to mix = %i \n max diff. vtxZ = cm %5.3f \n max diff multi = %5.3f", nmix, maxDiffVzMix, maxDiffMultMix));
   
   mgr->AddTask(task);
   
   //
   // cut on primary vertex:
   // - 2nd argument --> |Vz| range
   // - 3rd argument --> minimum required number of contributors to vtx
   // - 4th argument --> tells if TPC stand-alone vertexes must be accepted
   AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", vtxZcut, 0, kFALSE);
   
   if (isPP && (!isMC)) { 
     cutVertex->SetCheckPileUp(rejectPileUp);   // set the check for pileup  
     ::Info("AddAnalysisTaskTOFKStar", Form(":::::::::::::::::: Pile-up rejection mode: %s", (rejectPileUp)?"ON":"OFF"));   
   }
   
   // define and fill cut set for event cut
   AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent);
   eventCuts->AddCut(cutVertex);
   eventCuts->SetCutScheme(Form("%s", cutVertex->GetName()));
   task->SetEventCuts(eventCuts);
   
   //
   // -- EVENT-ONLY COMPUTATIONS -------------------------------------------------------------------
   //   
   //vertex
   Int_t vtxID = task->CreateValue(AliRsnMiniValue::kVz, kFALSE);
   AliRsnMiniOutput *outVtx = task->CreateOutput("eventVtx", "HIST", "EVENT");
   outVtx->AddAxis(vtxID, 240, -12.0, 12.0);
   
   //multiplicity or centrality
   Int_t multID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
   AliRsnMiniOutput *outMult = task->CreateOutput("eventMult", "HIST", "EVENT");
   if (isPP) 
     outMult->AddAxis(multID, 400, 0.0, 400.0);
   else
     outMult->AddAxis(multID, 100, 0.0, 100.0);
   
   TH2F* hvz=new TH2F("hVzVsCent","", 100, 0., 100., 240, -12.0, 12.0);
   task->SetEventQAHist("vz",hvz);//plugs this histogram into the fHAEventVz data member

   TH2F* hmc=new TH2F("MultiVsCent","", 100, 0., 100., 400, 0., 400.);
   hmc->GetYaxis()->SetTitle("QUALITY");
   task->SetEventQAHist("multicent",hmc);//plugs this histogram into the fHAEventMultiCent data member

   //
   // -- PAIR CUTS (common to all resonances) ------------------------------------------------------
   //
   AliRsnCutMiniPair *cutY = new AliRsnCutMiniPair("cutRapidity", AliRsnCutMiniPair::kRapidityRange);
   cutY->SetRangeD(minYlab, maxYlab);
   
   AliRsnCutSet *cutsPair = new AliRsnCutSet("pairCuts", AliRsnTarget::kMother);
   cutsPair->AddCut(cutY);
   cutsPair->SetCutScheme(cutY->GetName());
   
   //
   // -- CONFIG ANALYSIS --------------------------------------------------------------------------
   //   
   gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigKStarPP7TeV.C");
   if (!ConfigKStarPP7TeV(task, isMC, isPP, "", cutsPair, aodFilterBit, customQualityCutsID, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly,  monitorOpt.Data(), useMixLS, isMC&checkReflex, yaxisvar)) return 0x0;
   
   
   //
   // -- CONTAINERS --------------------------------------------------------------------------------
   //
   TString outputFileName = AliAnalysisManager::GetCommonFileName();
   //  outputFileName += ":Rsn";
   Printf("AddAnalysisTaskTOFKStar - Set OutputFileName : \n %s\n", outputFileName.Data() );
   
   AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s",outNameSuffix.Data()), 
							   TList::Class(), 
							   AliAnalysisManager::kOutputContainer, 
							   outputFileName);
   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(task, 1, output);
   
   return task;
}
 AddTaskKStarPP7TeV.C:1
 AddTaskKStarPP7TeV.C:2
 AddTaskKStarPP7TeV.C:3
 AddTaskKStarPP7TeV.C:4
 AddTaskKStarPP7TeV.C:5
 AddTaskKStarPP7TeV.C:6
 AddTaskKStarPP7TeV.C:7
 AddTaskKStarPP7TeV.C:8
 AddTaskKStarPP7TeV.C:9
 AddTaskKStarPP7TeV.C:10
 AddTaskKStarPP7TeV.C:11
 AddTaskKStarPP7TeV.C:12
 AddTaskKStarPP7TeV.C:13
 AddTaskKStarPP7TeV.C:14
 AddTaskKStarPP7TeV.C:15
 AddTaskKStarPP7TeV.C:16
 AddTaskKStarPP7TeV.C:17
 AddTaskKStarPP7TeV.C:18
 AddTaskKStarPP7TeV.C:19
 AddTaskKStarPP7TeV.C:20
 AddTaskKStarPP7TeV.C:21
 AddTaskKStarPP7TeV.C:22
 AddTaskKStarPP7TeV.C:23
 AddTaskKStarPP7TeV.C:24
 AddTaskKStarPP7TeV.C:25
 AddTaskKStarPP7TeV.C:26
 AddTaskKStarPP7TeV.C:27
 AddTaskKStarPP7TeV.C:28
 AddTaskKStarPP7TeV.C:29
 AddTaskKStarPP7TeV.C:30
 AddTaskKStarPP7TeV.C:31
 AddTaskKStarPP7TeV.C:32
 AddTaskKStarPP7TeV.C:33
 AddTaskKStarPP7TeV.C:34
 AddTaskKStarPP7TeV.C:35
 AddTaskKStarPP7TeV.C:36
 AddTaskKStarPP7TeV.C:37
 AddTaskKStarPP7TeV.C:38
 AddTaskKStarPP7TeV.C:39
 AddTaskKStarPP7TeV.C:40
 AddTaskKStarPP7TeV.C:41
 AddTaskKStarPP7TeV.C:42
 AddTaskKStarPP7TeV.C:43
 AddTaskKStarPP7TeV.C:44
 AddTaskKStarPP7TeV.C:45
 AddTaskKStarPP7TeV.C:46
 AddTaskKStarPP7TeV.C:47
 AddTaskKStarPP7TeV.C:48
 AddTaskKStarPP7TeV.C:49
 AddTaskKStarPP7TeV.C:50
 AddTaskKStarPP7TeV.C:51
 AddTaskKStarPP7TeV.C:52
 AddTaskKStarPP7TeV.C:53
 AddTaskKStarPP7TeV.C:54
 AddTaskKStarPP7TeV.C:55
 AddTaskKStarPP7TeV.C:56
 AddTaskKStarPP7TeV.C:57
 AddTaskKStarPP7TeV.C:58
 AddTaskKStarPP7TeV.C:59
 AddTaskKStarPP7TeV.C:60
 AddTaskKStarPP7TeV.C:61
 AddTaskKStarPP7TeV.C:62
 AddTaskKStarPP7TeV.C:63
 AddTaskKStarPP7TeV.C:64
 AddTaskKStarPP7TeV.C:65
 AddTaskKStarPP7TeV.C:66
 AddTaskKStarPP7TeV.C:67
 AddTaskKStarPP7TeV.C:68
 AddTaskKStarPP7TeV.C:69
 AddTaskKStarPP7TeV.C:70
 AddTaskKStarPP7TeV.C:71
 AddTaskKStarPP7TeV.C:72
 AddTaskKStarPP7TeV.C:73
 AddTaskKStarPP7TeV.C:74
 AddTaskKStarPP7TeV.C:75
 AddTaskKStarPP7TeV.C:76
 AddTaskKStarPP7TeV.C:77
 AddTaskKStarPP7TeV.C:78
 AddTaskKStarPP7TeV.C:79
 AddTaskKStarPP7TeV.C:80
 AddTaskKStarPP7TeV.C:81
 AddTaskKStarPP7TeV.C:82
 AddTaskKStarPP7TeV.C:83
 AddTaskKStarPP7TeV.C:84
 AddTaskKStarPP7TeV.C:85
 AddTaskKStarPP7TeV.C:86
 AddTaskKStarPP7TeV.C:87
 AddTaskKStarPP7TeV.C:88
 AddTaskKStarPP7TeV.C:89
 AddTaskKStarPP7TeV.C:90
 AddTaskKStarPP7TeV.C:91
 AddTaskKStarPP7TeV.C:92
 AddTaskKStarPP7TeV.C:93
 AddTaskKStarPP7TeV.C:94
 AddTaskKStarPP7TeV.C:95
 AddTaskKStarPP7TeV.C:96
 AddTaskKStarPP7TeV.C:97
 AddTaskKStarPP7TeV.C:98
 AddTaskKStarPP7TeV.C:99
 AddTaskKStarPP7TeV.C:100
 AddTaskKStarPP7TeV.C:101
 AddTaskKStarPP7TeV.C:102
 AddTaskKStarPP7TeV.C:103
 AddTaskKStarPP7TeV.C:104
 AddTaskKStarPP7TeV.C:105
 AddTaskKStarPP7TeV.C:106
 AddTaskKStarPP7TeV.C:107
 AddTaskKStarPP7TeV.C:108
 AddTaskKStarPP7TeV.C:109
 AddTaskKStarPP7TeV.C:110
 AddTaskKStarPP7TeV.C:111
 AddTaskKStarPP7TeV.C:112
 AddTaskKStarPP7TeV.C:113
 AddTaskKStarPP7TeV.C:114
 AddTaskKStarPP7TeV.C:115
 AddTaskKStarPP7TeV.C:116
 AddTaskKStarPP7TeV.C:117
 AddTaskKStarPP7TeV.C:118
 AddTaskKStarPP7TeV.C:119
 AddTaskKStarPP7TeV.C:120
 AddTaskKStarPP7TeV.C:121
 AddTaskKStarPP7TeV.C:122
 AddTaskKStarPP7TeV.C:123
 AddTaskKStarPP7TeV.C:124
 AddTaskKStarPP7TeV.C:125
 AddTaskKStarPP7TeV.C:126
 AddTaskKStarPP7TeV.C:127
 AddTaskKStarPP7TeV.C:128
 AddTaskKStarPP7TeV.C:129
 AddTaskKStarPP7TeV.C:130
 AddTaskKStarPP7TeV.C:131
 AddTaskKStarPP7TeV.C:132
 AddTaskKStarPP7TeV.C:133
 AddTaskKStarPP7TeV.C:134
 AddTaskKStarPP7TeV.C:135
 AddTaskKStarPP7TeV.C:136
 AddTaskKStarPP7TeV.C:137
 AddTaskKStarPP7TeV.C:138
 AddTaskKStarPP7TeV.C:139
 AddTaskKStarPP7TeV.C:140
 AddTaskKStarPP7TeV.C:141
 AddTaskKStarPP7TeV.C:142
 AddTaskKStarPP7TeV.C:143
 AddTaskKStarPP7TeV.C:144
 AddTaskKStarPP7TeV.C:145
 AddTaskKStarPP7TeV.C:146
 AddTaskKStarPP7TeV.C:147
 AddTaskKStarPP7TeV.C:148
 AddTaskKStarPP7TeV.C:149
 AddTaskKStarPP7TeV.C:150
 AddTaskKStarPP7TeV.C:151
 AddTaskKStarPP7TeV.C:152
 AddTaskKStarPP7TeV.C:153
 AddTaskKStarPP7TeV.C:154
 AddTaskKStarPP7TeV.C:155
 AddTaskKStarPP7TeV.C:156
 AddTaskKStarPP7TeV.C:157
 AddTaskKStarPP7TeV.C:158
 AddTaskKStarPP7TeV.C:159
 AddTaskKStarPP7TeV.C:160
 AddTaskKStarPP7TeV.C:161
 AddTaskKStarPP7TeV.C:162
 AddTaskKStarPP7TeV.C:163
 AddTaskKStarPP7TeV.C:164
 AddTaskKStarPP7TeV.C:165
 AddTaskKStarPP7TeV.C:166
 AddTaskKStarPP7TeV.C:167
 AddTaskKStarPP7TeV.C:168
 AddTaskKStarPP7TeV.C:169
 AddTaskKStarPP7TeV.C:170
 AddTaskKStarPP7TeV.C:171
 AddTaskKStarPP7TeV.C:172
 AddTaskKStarPP7TeV.C:173
 AddTaskKStarPP7TeV.C:174
 AddTaskKStarPP7TeV.C:175
 AddTaskKStarPP7TeV.C:176
 AddTaskKStarPP7TeV.C:177
 AddTaskKStarPP7TeV.C:178
 AddTaskKStarPP7TeV.C:179
 AddTaskKStarPP7TeV.C:180
 AddTaskKStarPP7TeV.C:181
 AddTaskKStarPP7TeV.C:182
 AddTaskKStarPP7TeV.C:183
 AddTaskKStarPP7TeV.C:184
 AddTaskKStarPP7TeV.C:185
 AddTaskKStarPP7TeV.C:186
 AddTaskKStarPP7TeV.C:187
 AddTaskKStarPP7TeV.C:188
 AddTaskKStarPP7TeV.C:189
 AddTaskKStarPP7TeV.C:190
 AddTaskKStarPP7TeV.C:191
 AddTaskKStarPP7TeV.C:192
 AddTaskKStarPP7TeV.C:193
 AddTaskKStarPP7TeV.C:194
 AddTaskKStarPP7TeV.C:195
 AddTaskKStarPP7TeV.C:196
 AddTaskKStarPP7TeV.C:197
 AddTaskKStarPP7TeV.C:198
 AddTaskKStarPP7TeV.C:199
 AddTaskKStarPP7TeV.C:200
 AddTaskKStarPP7TeV.C:201
 AddTaskKStarPP7TeV.C:202
 AddTaskKStarPP7TeV.C:203
 AddTaskKStarPP7TeV.C:204
 AddTaskKStarPP7TeV.C:205
 AddTaskKStarPP7TeV.C:206
 AddTaskKStarPP7TeV.C:207