ROOT logo
#ifndef __CINT__
#include <AliRsnCutPID.h>
#include <AliRsnInputHandler.h>
#include <AliRsnCutSet.h>
#include <AliRsnCutValue.h>
#endif

Int_t AddRsnDaughterCutsPDG(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
{

   if (!rsnIH) return 0;

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

   // gets selector
   AliRsnDaughterSelector *sel = rsnIH->GetSelector();

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

   Bool_t useQuality = kFALSE;
   if (opt.Contains("quality")) {
      useQuality = kTRUE;
   }


   Double_t etaRange=0.8;

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

   AliRsnCutSet *cuts1 = new AliRsnCutSet(Form("%sPDG%s",AliPID::ParticleName(type1),opt.Data()), AliRsnTarget::kDaughter);

   Double_t nSigmaTPC=3.0;
   Double_t nSigmaTOF=3.0;
   Double_t ptTPCMax=0.8;

   TString scheme;

   AliRsnCutPID *cut1 = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
   cuts1->AddCut(cut1);
   if (!scheme.IsNull()) scheme += "&";
   scheme += cut1->GetName();
   if (useEta) {
      AliRsnCutValue *cutEta1 = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
      AliRsnValueDaughter *valEta1 = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1)),AliRsnValueDaughter::kEta);
      cutEta1->SetValueObj(valEta1);
      cuts1->AddCut(cutEta1);
      if (!scheme.IsNull()) scheme += "&";
      scheme += cutEta1->GetName();
   }
   if (useQuality) {
      AliRsnCutTrackQuality *qualityCut1 = new AliRsnCutTrackQuality("cutQuatityPDG1");
      qualityCut1->SetDefaults2010();
      cuts1->AddCut(qualityCut1);
      if (!scheme.IsNull()) scheme += "&";
      scheme += qualityCut1->GetName();
   }
   cuts1->SetCutScheme(scheme.Data());
   sel->Add(cuts1, kTRUE);

   scheme = "";
   AliRsnCutSet *cuts2 = 0;
   if (type1 != type2) {
      AliRsnCutPID *cut2 = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type2),opt.Data()),type2,0.0,kTRUE);

      cuts2 = new AliRsnCutSet(Form("%sPDG%s",AliPID::ParticleName(type2),opt.Data()), AliRsnTarget::kDaughter);
      cuts2->AddCut(cut2);
      if (!scheme.IsNull()) scheme += "&";
      scheme += cut2->GetName();
      if (useQuality) {
         AliRsnCutTrackQuality *qualityCut2 = new AliRsnCutTrackQuality("cutQuatityPDG2");
         qualityCut2->SetDefaults2010();
         cuts2->AddCut(qualityCut2);
         if (!scheme.IsNull()) scheme += "&";
         scheme += qualityCut2->GetName();
      }
      if (useEta) {
         AliRsnCutValue *cutEta2 = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type2),opt.Data()),-etaRange,etaRange);
         AliRsnValueDaughter *valEta2 = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type2)),AliRsnValueDaughter::kEta);
         cutEta2->SetValueObj(valEta2);
         cuts2->AddCut(cutEta2);
         if (!scheme.IsNull()) scheme += "&";
         scheme += cutEta2->GetName();
      }

      cuts2->SetCutScheme(scheme.Data());
      sel->Add(cuts2, kTRUE);
      numberOfCuts++;
   }
   if (opt.Contains("mon")) {
      AddMonitorOutput(cuts1->GetMonitorOutput(),opt);
      if (type1 != type2) AddMonitorOutput(cuts2->GetMonitorOutput());
   }
   if (isRsnMini) {
      AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
      if (taskRsnMini) {
         taskRsnMini->AddTrackCuts(cuts1);
         if (type1 != type2) taskRsnMini->AddTrackCuts(cuts2);
      }
   } else {
      AliRsnDaughterSelector *sel = rsnIH->GetSelector();
      sel->Add(cuts1, kTRUE);
      if (type1 != type2)  sel->Add(cuts2, kTRUE);
   }

   return numberOfCuts;
}


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