]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStarSyst.C
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / ConfigTPCanalysisKStarSyst.C
CommitLineData
ab1beea4 1/***************************************************************************
5ce0629b 2 subhash.singha@cern.ch - last modified on 20/01/2014
ab1beea4
FB
3
4// *** Configuration script for K*, anti-K* analysis with 2010 PbPb runs ***
5//
6// A configuration script for RSN package needs to define the followings:
7//
8// (1) decay tree of each resonance to be studied, which is needed to select
9// true pairs and to assign the right mass to all candidate daughters
10// (2) cuts at all levels: single daughters, tracks, events
11// (3) output objects: histograms or trees
12****************************************************************************/
13
14Bool_t ConfigTPCanalysisKStarSyst
15(
16 AliRsnMiniAnalysisTask *task,
17 Bool_t isMC,
18 Bool_t isPP,
19 const char *suffix,
20 AliRsnCutSet *cutsPair,
21 Int_t aodFilterBit = 5,
22 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutPiCandidate = AliRsnCutSetDaughterParticle::kFastTPCpidNsigma,
23 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutKaCandidate = AliRsnCutSetDaughterParticle::kFastTPCpidNsigma,
24 Float_t nsigmaPi = 2.0,
25 Float_t nsigmaKa = 2.0,
26 Bool_t enableSyst = kFALSE,
27 Char_t DCAxyFormula[100] = "0.0182+0.035/pt^1.01",
28 Double_t dcazmax = 3.2,
29 Double_t minNcls = 70,
30 Double_t maxX2cls = 5.0,
31 Double_t minCrossedRows = 50.0,
32 Double_t maxClsCrossedRows = 0.8,
33 Bool_t enableMonitor = kTRUE,
34 Bool_t IsMcTrueOnly = kFALSE,
35 Int_t Pdg = 313,
36 Int_t aodN = 0
37)
38{
39 // manage suffix
40 if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
41
42 // set daughter cuts
43 AliRsnCutSetDaughterParticle * cutSetQ;
44 AliRsnCutSetDaughterParticle * cutSetPi;
45 AliRsnCutSetDaughterParticle * cutSetK;
46
47 //vary track quality cuts for systematic checks
48 if(enableSyst){
49 AliRsnCutTrackQuality * trkQualityCut = new AliRsnCutTrackQuality("QualityCut");
50
51 trkQualityCut->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
52 trkQualityCut->SetAODTestFilterBit(aodFilterBit);//reset the filter bit cut
53 trkQualityCut->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually,
54 trkQualityCut->SetDCARPtFormula(DCAxyFormula);
55 trkQualityCut->SetDCAZmax(dcazmax);
56 trkQualityCut->SetMinNCrossedRowsTPC(minCrossedRows, kTRUE);
57 trkQualityCut->SetMinNCrossedRowsOverFindableClsTPC(maxClsCrossedRows, kTRUE);
58 trkQualityCut->SetTPCmaxChi2(maxX2cls);
59 trkQualityCut->SetRejectKinkDaughters(kTRUE);
60 trkQualityCut->SetSPDminNClusters(AliESDtrackCuts::kAny);
61 trkQualityCut->SetITSmaxChi2(36);
62 trkQualityCut->AddStatusFlag(AliESDtrack::kTPCin , kTRUE);//already in defaults 2011
63 trkQualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);//already in defaults 2011
64 trkQualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);//already in defaults 2011
65 //trkQualityCut->SetTPCminNClusters(70);
66 trkQualityCut->SetPtRange(0.15, 20.0);
67 trkQualityCut->SetEtaRange(-0.8, 0.8);
68
69 trkQualityCut->Print();
70
71 cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), trkQualityCut, AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0);
72 cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), trkQualityCut, cutPiCandidate, AliPID::kPion, nsigmaPi);
73 cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), trkQualityCut, cutKaCandidate, AliPID::kKaon, nsigmaKa);
74
75
76 }
77 else
78 {
79 //default cuts 2011
80 cutSetQ = new AliRsnCutSetDaughterParticle("cutQuality", AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit);
81 cutSetQ->SetUse2011StdQualityCuts(kTRUE);
82 cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPionTPCPbPb2011_%2.1fsigma",nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit);
83 cutSetPi->SetUse2011StdQualityCuts(kTRUE);
84 cutSetK = new AliRsnCutSetDaughterParticle(Form("cutKaonTPCPbPb2011_%2.1f2sigma",nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit);
85 cutSetK->SetUse2011StdQualityCuts(kTRUE);
86 }
87
88
89 Int_t iCutQ = task->AddTrackCuts(cutSetQ);
90 Int_t iCutPi = task->AddTrackCuts(cutSetPi);
91 Int_t iCutK = task->AddTrackCuts(cutSetK);
92
93 if(enableMonitor){
94 Printf("======== Monitoring cut AliRsnCutSetDaughterParticle enabled");
95 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C");
96 AddMonitorOutput(isMC, cutSetQ->GetMonitorOutput());
97 AddMonitorOutput(isMC, cutSetPi->GetMonitorOutput());
98 AddMonitorOutput(isMC, cutSetK->GetMonitorOutput());
99 }
100
101 // -- Values ------------------------------------------------------------------------------------
102 /* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
103 /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
104 /* transv. momentum */ Int_t ptID = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
105 /* centrality */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
106 /* pseudorapidity */ Int_t etaID = task->CreateValue(AliRsnMiniValue::kEta, kFALSE);
107 /* rapidity */ Int_t yID = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
108
109 // -- Create all needed outputs -----------------------------------------------------------------
110 // use an array for more compact writing, which are different on mixing and charges
111 // [0] = unlike
112 // [1] = mixing
113 // [2] = like ++
114 // [3] = like --
5ce0629b 115 Bool_t use [12] = { !IsMcTrueOnly, !IsMcTrueOnly, !IsMcTrueOnly, !IsMcTrueOnly , !IsMcTrueOnly, !IsMcTrueOnly, isMC , isMC , isMC , isMC, !IsMcTrueOnly, !IsMcTrueOnly };
116 Bool_t useIM [12] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0, 1 , 1 };
117 TString name [12] = {"UnlikePM", "UnlikeMP", "MixingPM", "MixingMP", "LikePP", "LikeMM", "TruesPM", "TruesMP", "ResPM" , "ResMP", "RotatePM", "RotateMP" };
118 TString comp [12] = {"PAIR" , "PAIR" , "MIX" , "MIX" , "PAIR" , "PAIR" , "TRUE" , "TRUE" , "TRUE" , "TRUE", "ROTATE2", "ROTATE2" };
119 //TString output [12] = {"HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" };
120 TString output [12] = {"SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" };
121 Char_t charge1 [12] = {'+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' };
122 Char_t charge2 [12] = {'-' , '+' , '-' , '+' , '+' , '-' , '-' , '+' , '-' , '+' , '-' , '+' };
123 Int_t cutID1 [12] = { iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK, iCutK , iCutK };
124 Int_t cutID2 [12] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi, iCutPi , iCutPi };
ab1beea4 125
5ce0629b 126 for (Int_t i = 0; i < 12; i++) {
ab1beea4
FB
127 if (!use[i]) continue;
128 if(Pdg > 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar1_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
129 if(Pdg < 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar2_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
130 out->SetCutID(0, cutID1[i]);
131 out->SetCutID(1, cutID2[i]);
132 out->SetDaughter(0, AliRsnDaughter::kKaon);
133 out->SetDaughter(1, AliRsnDaughter::kPion);
134 out->SetCharge(0, charge1[i]);
135 out->SetCharge(1, charge2[i]);
136 out->SetMotherPDG(Pdg);//313
137 out->SetMotherMass(0.89594);
138 out->SetPairCuts(cutsPair);
139
140 // axis X: invmass (or resolution)
141 if (useIM[i])
142 out->AddAxis(imID, 90, 0.6, 1.5);
143 //else
144 //out->AddAxis(resID, 200, -0.02, 0.02);
145
146 // axis Y: transverse momentum
147 out->AddAxis(ptID, 300, 0.0, 30.0);
148
149 // axis Z: centrality-multiplicity
150 if (!isPP)
151 out->AddAxis(centID, 100, 0.0, 100.0);
152 else
153 out->AddAxis(centID, 400, 0.0, 400.0);
154
155 // axis W: pseudorapidity
156 // out->AddAxis(etaID, 20, -1.0, 1.0);
157 // axis J: rapidity
158 //out->AddAxis(yID, 32, -0.8, 0.8);
159
160 }
161
162 if (isMC){
163 // create output
164
165 if(Pdg > 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother1%s", suffix), "SPARSE", "MOTHER");}
166 if(Pdg < 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother2%s", suffix), "SPARSE", "MOTHER");}
167 outm->SetDaughter(0, AliRsnDaughter::kKaon);
168 outm->SetDaughter(1, AliRsnDaughter::kPion);
169 outm->SetMotherPDG(Pdg);//313
170 outm->SetMotherMass(0.89594);
171 // pair cuts
172 outm->SetPairCuts(cutsPair);
173 // binnings
174 outm->AddAxis(imID, 90, 0.6, 1.5);
175 outm->AddAxis(ptID, 300, 0.0, 30.0);
176 if (!isPP){
177 outm->AddAxis(centID, 100, 0.0, 100.0);
178 } else {
179 outm->AddAxis(centID, 400, 0.0, 400.0);
180 }
181 //outm->AddAxis(yID, 32, -0.8, 0.8);
182 }
183 return kTRUE;
184}
185