]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/lego_train/old/AddRsnDaughterCutsPDG.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / old / AddRsnDaughterCutsPDG.C
1 #ifndef __CINT__
2 #include <AliRsnCutPID.h>
3 #include <AliRsnInputHandler.h>
4 #include <AliRsnCutSet.h>
5 #include <AliRsnCutValue.h>
6 #endif
7
8 Int_t AddRsnDaughterCutsPDG(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
9 {
10
11    if (!rsnIH) return 0;
12
13    // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
14    Int_t numberOfCuts = 1;
15
16    // gets selector
17    AliRsnDaughterSelector *sel = rsnIH->GetSelector();
18
19    //---------------------------------------------
20    //  Define single cuts
21    //---------------------------------------------
22
23    Bool_t useQuality = kFALSE;
24    if (opt.Contains("quality")) {
25       useQuality = kTRUE;
26    }
27
28
29    Double_t etaRange=0.8;
30
31    AliRsnCutValue *cutEta;
32    Bool_t useEta = kFALSE;
33    if (opt.Contains("eta")) {
34       Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
35       useEta = kTRUE;
36    }
37
38    AliRsnCutSet *cuts1 = new AliRsnCutSet(Form("%sPDG%s",AliPID::ParticleName(type1),opt.Data()), AliRsnTarget::kDaughter);
39
40    Double_t nSigmaTPC=3.0;
41    Double_t nSigmaTOF=3.0;
42    Double_t ptTPCMax=0.8;
43
44    TString scheme;
45
46    AliRsnCutPID *cut1 = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
47    cuts1->AddCut(cut1);
48    if (!scheme.IsNull()) scheme += "&";
49    scheme += cut1->GetName();
50    if (useEta) {
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();
57    }
58    if (useQuality) {
59       AliRsnCutTrackQuality *qualityCut1 = new AliRsnCutTrackQuality("cutQuatityPDG1");
60       qualityCut1->SetDefaults2010();
61       cuts1->AddCut(qualityCut1);
62       if (!scheme.IsNull()) scheme += "&";
63       scheme += qualityCut1->GetName();
64    }
65    cuts1->SetCutScheme(scheme.Data());
66    sel->Add(cuts1, kTRUE);
67
68    scheme = "";
69    AliRsnCutSet *cuts2 = 0;
70    if (type1 != type2) {
71       AliRsnCutPID *cut2 = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type2),opt.Data()),type2,0.0,kTRUE);
72
73       cuts2 = new AliRsnCutSet(Form("%sPDG%s",AliPID::ParticleName(type2),opt.Data()), AliRsnTarget::kDaughter);
74       cuts2->AddCut(cut2);
75       if (!scheme.IsNull()) scheme += "&";
76       scheme += cut2->GetName();
77       if (useQuality) {
78          AliRsnCutTrackQuality *qualityCut2 = new AliRsnCutTrackQuality("cutQuatityPDG2");
79          qualityCut2->SetDefaults2010();
80          cuts2->AddCut(qualityCut2);
81          if (!scheme.IsNull()) scheme += "&";
82          scheme += qualityCut2->GetName();
83       }
84       if (useEta) {
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();
91       }
92
93       cuts2->SetCutScheme(scheme.Data());
94       sel->Add(cuts2, kTRUE);
95       numberOfCuts++;
96    }
97    if (opt.Contains("mon")) {
98       AddMonitorOutput(cuts1->GetMonitorOutput(),opt);
99       if (type1 != type2) AddMonitorOutput(cuts2->GetMonitorOutput());
100    }
101    if (isRsnMini) {
102       AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
103       if (taskRsnMini) {
104          taskRsnMini->AddTrackCuts(cuts1);
105          if (type1 != type2) taskRsnMini->AddTrackCuts(cuts2);
106       }
107    } else {
108       AliRsnDaughterSelector *sel = rsnIH->GetSelector();
109       sel->Add(cuts1, kTRUE);
110       if (type1 != type2)  sel->Add(cuts2, kTRUE);
111    }
112
113    return numberOfCuts;
114 }
115
116