2 #include <AliRsnCutPID.h>
3 #include <AliRsnInputHandler.h>
4 #include <AliRsnCutSet.h>
5 #include <AliRsnCutValue.h>
8 Int_t AddRsnDaughterCutsPDG(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
13 // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
14 Int_t numberOfCuts = 1;
17 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
19 //---------------------------------------------
21 //---------------------------------------------
23 Bool_t useQuality = kFALSE;
24 if (opt.Contains("quality")) {
29 Double_t etaRange=0.8;
31 AliRsnCutValue *cutEta;
32 Bool_t useEta = kFALSE;
33 if (opt.Contains("eta")) {
34 Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
38 AliRsnCutSet *cuts1 = new AliRsnCutSet(Form("%sPDG%s",AliPID::ParticleName(type1),opt.Data()), AliRsnTarget::kDaughter);
40 Double_t nSigmaTPC=3.0;
41 Double_t nSigmaTOF=3.0;
42 Double_t ptTPCMax=0.8;
46 AliRsnCutPID *cut1 = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
48 if (!scheme.IsNull()) scheme += "&";
49 scheme += cut1->GetName();
51 AliRsnCutValue *cutEta1 = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
52 AliRsnValueDaughter *valEta1 = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1)),AliRsnValueDaughter::kEta);
53 cutEta1->SetValueObj(valEta1);
54 cuts1->AddCut(cutEta1);
55 if (!scheme.IsNull()) scheme += "&";
56 scheme += cutEta1->GetName();
59 AliRsnCutTrackQuality *qualityCut1 = new AliRsnCutTrackQuality("cutQuatityPDG1");
60 qualityCut1->SetDefaults2010();
61 cuts1->AddCut(qualityCut1);
62 if (!scheme.IsNull()) scheme += "&";
63 scheme += qualityCut1->GetName();
65 cuts1->SetCutScheme(scheme.Data());
66 sel->Add(cuts1, kTRUE);
69 AliRsnCutSet *cuts2 = 0;
71 AliRsnCutPID *cut2 = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type2),opt.Data()),type2,0.0,kTRUE);
73 cuts2 = new AliRsnCutSet(Form("%sPDG%s",AliPID::ParticleName(type2),opt.Data()), AliRsnTarget::kDaughter);
75 if (!scheme.IsNull()) scheme += "&";
76 scheme += cut2->GetName();
78 AliRsnCutTrackQuality *qualityCut2 = new AliRsnCutTrackQuality("cutQuatityPDG2");
79 qualityCut2->SetDefaults2010();
80 cuts2->AddCut(qualityCut2);
81 if (!scheme.IsNull()) scheme += "&";
82 scheme += qualityCut2->GetName();
85 AliRsnCutValue *cutEta2 = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type2),opt.Data()),-etaRange,etaRange);
86 AliRsnValueDaughter *valEta2 = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type2)),AliRsnValueDaughter::kEta);
87 cutEta2->SetValueObj(valEta2);
88 cuts2->AddCut(cutEta2);
89 if (!scheme.IsNull()) scheme += "&";
90 scheme += cutEta2->GetName();
93 cuts2->SetCutScheme(scheme.Data());
94 sel->Add(cuts2, kTRUE);
97 if (opt.Contains("mon")) {
98 AddMonitorOutput(cuts1->GetMonitorOutput(),opt);
99 if (type1 != type2) AddMonitorOutput(cuts2->GetMonitorOutput());
102 AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
104 taskRsnMini->AddTrackCuts(cuts1);
105 if (type1 != type2) taskRsnMini->AddTrackCuts(cuts2);
108 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
109 sel->Add(cuts1, kTRUE);
110 if (type1 != type2) sel->Add(cuts2, kTRUE);