#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