ROOT logo
#ifndef __CINT__
#include <AliRsnCutPIDNSigma.h>
#include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>
#endif
Int_t AddRsnDaughterCutsRho(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
{

   if (!rsnIH) return 0;

   Bool_t valid = kTRUE;
   Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);

   Bool_t usePPCut = kFALSE;

   if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE;


   // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
   Int_t numberOfCuts = 1;

   //---------------------------------------------
   //  Define single cuts
   //---------------------------------------------

   Printf("AliRsnCutPIDNSigma Option : %s",opt.Data());

   Double_t nSigmaTPC=3.0;
   Double_t nSigmaTOF=3.0;
   Double_t etaRange=0.8;

   if (opt.Contains("TPCsigma1")) nSigmaTPC = 1.0;
   if (opt.Contains("TPCsigma2")) nSigmaTPC = 2.0;
   if (opt.Contains("TPCsigma3")) nSigmaTPC = 3.0;

   if (opt.Contains("TOFsigma1")) nSigmaTOF = 1.0;
   if (opt.Contains("TOFsigma2")) nSigmaTOF = 2.0;
   if (opt.Contains("TOFsigma3")) nSigmaTOF = 3.0;

   Bool_t usePDG=kFALSE;
   if (opt.Contains("pdg")) {
      Printf("Using PDG");
      usePDG = kTRUE;
   }

   Bool_t useEta = kFALSE;
   if (opt.Contains("eta")) {
      Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
      useEta = kTRUE;
   }

   Bool_t usetof = kFALSE;
   if(opt.Contains("tof")) {
      Printf("Using tof PID range (%.2f,%.2f)",0.0,1E+20);
      usetof = kTRUE;
   }

   Bool_t usetpc = kFALSE;
   if(opt.Contains("tpc")) {
      Printf("Using tpc PID range (%.2f,%.2f)",0.0,1E+20);
      usetpc = kTRUE;
   }

//---------------------------------------------
//  Combine cuts
//---------------------------------------------

   TString cutname = "pionRho";
   if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
   AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);

   TString scheme="";

   AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatity");
   //qualityCut->SetDefaults2010();
   //qualityCut->SetDCAZmax(0.3);
   //qualityCut->SetDCARmax(0.05);

   qualityCut->SetDCAZmax(0.2);
   qualityCut->SetDCARmax(0.02);
   qualityCut->AddStatusFlag(AliESDtrack::kTPCin   , kTRUE);
   qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
   qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);


   qualityCut->SetPtRange(0.15, 1E+20);
   qualityCut->SetEtaRange(-0.8, 0.8);
   qualityCut->SetSPDminNClusters(0);
   qualityCut->SetITSminNClusters(0);
   qualityCut->SetITSmaxChi2(1E+20);
   qualityCut->SetTPCminNClusters(80);
   qualityCut->SetTPCmaxChi2(4.0);
   qualityCut->SetRejectKinkDaughters();
   cuts->AddCut(qualityCut);
   if (!scheme.IsNull()) scheme += "&";
   scheme += qualityCut->GetName();

   if (usetpc) {
      AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPC",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);
      cutPiTPC->SinglePIDRange(nSigmaTPC);
      //cutPiTPC->AddPIDRange(nSigmaTPC,0.0,0.7);
      cuts->AddCut(cutPiTPC);
      if (!scheme.IsNull()) scheme += "&";
      scheme += cutPiTPC->GetName();
   }

   if(usetof) {
      AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOF",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);
      cutPiTOF->SinglePIDRange(nSigmaTOF);
      //cutPiTOF->AddPIDRange(nSigmaTOF,0.7,1e20);
      cuts->AddCut(cutPiTOF);
      if (!scheme.IsNull()) scheme += "&";
      scheme += cutPiTOF->GetName();
   }

   if (useEta) {
      Printf("Adding ETA ...");
      AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
      AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
      cutEta->SetTargetType(AliRsnTarget::kDaughter);
      cutEta->SetValueObj(valEta);
      cuts->AddCut(cutEta);
      if (!scheme.IsNull()) scheme += "&";
      scheme += cutEta->GetName();
   }
   if (usePDG) {
      Printf("Adding PDG ...");
      AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
      cuts->AddCut(cutPDG);
      if (!scheme.IsNull()) scheme += "&";
      scheme += cutPDG->GetName();
   }

   Printf ("CUT Scheme is '%s'",scheme.Data());
   cuts->SetCutScheme(scheme.Data());

   if (opt.Contains("mon")) {
      AddMonitorOutput(cuts->GetMonitorOutput(),opt);
   }
   if (isRsnMini) {
      AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
      if (taskRsnMini) {
         taskRsnMini->AddTrackCuts(cuts);
      }
   } else {
      AliRsnDaughterSelector *sel = rsnIH->GetSelector();
//       sel->SetLabelCheck(kFALSE);
      sel->Add(cuts, kTRUE);
   }
   return numberOfCuts;

}

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