1 /***************************************************************************
2 fbellini@cern.ch - last modified on 06/08/2012
4 // *** Configuration script for K*, anti-K* analysis with 2010 PbPb runs ***
6 // A configuration script for RSN package needs to define the followings:
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 ****************************************************************************/
14 Bool_t ConfigTPCanalysisKStarMC
16 AliRsnMiniAnalysisTask *task,
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 enableMonitor = kTRUE,
27 Bool_t IsMcTrueOnly = kFALSE,
30 Int_t StdQualityCut_filterbit==10
34 if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
37 AliRsnCutSetDaughterParticle * cutSetQ;
38 AliRsnCutSetDaughterParticle * cutSetPi;
39 AliRsnCutSetDaughterParticle * cutSetK;
42 //cutSetQ = new AliRsnCutSetDaughterParticle("cutQuality", AliRsnCutSetDaughterParticle::kQualityStd2010, AliPID::kPion, -1.0, aodFilterBit);
43 //cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPionTPCpp2011_%2.1fsigma",nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit);
44 //cutSetK = new AliRsnCutSetDaughterParticle(Form("cutKaonTPCpp2011_%2.1f2sigma",nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit);
48 //cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit, kTRUE);
49 //cutSetQ->SetUse2011StdQualityCutsHighPt(kTRUE);
50 //cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kTRUE);
51 //cutSetPi->SetUse2011StdQualityCutsHighPt(kTRUE);
52 //cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit,kTRUE);
53 //cutSetK->SetUse2011StdQualityCutsHighPt(kTRUE);
56 if(StdQualityCut_filterbit==10){
57 cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011HighPt, AliPID::kPion, -1.0, aodFilterBit, kFALSE);
58 cutSetQ->SetUse2011StdQualityCutsHighPt(kTRUE);
60 cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kFALSE);
61 cutSetPi->SetUse2011StdQualityCutsHighPt(kTRUE);
63 cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa,aodFilterBit,kFALSE);
64 cutSetK->SetUse2011StdQualityCutsHighPt(kTRUE);
68 if(StdQualityCut_filterbit==5){
69 cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit, kTRUE);
70 cutSetQ->SetUse2011StdQualityCuts(kTRUE);
72 cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kTRUE);
73 cutSetPi->SetUse2011StdQualityCuts(kTRUE);
75 cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit,kTRUE);
76 cutSetK->SetUse2011StdQualityCuts(kTRUE);
80 if(StdQualityCut_filterbit==00){
81 cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011HighPt, AliPID::kPion, -1.0, aodFilterBit, kTRUE);
82 cutSetQ->SetUse2011StdQualityCutsHighPt(kFALSE);
84 cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kTRUE);
85 cutSetPi->SetUse2011StdQualityCutsHighPt(kFALSE);
87 cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit,kTRUE);
88 cutSetK->SetUse2011StdQualityCutsHighPt(kFALSE);
91 //================================
93 Int_t iCutQ = task->AddTrackCuts(cutSetQ);
94 Int_t iCutPi = task->AddTrackCuts(cutSetPi);
95 Int_t iCutK = task->AddTrackCuts(cutSetK);
98 Printf("======== Monitoring cut AliRsnCutSetDaughterParticle enabled");
99 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C");
100 AddMonitorOutput(isMC, cutSetQ->GetMonitorOutput());
101 AddMonitorOutput(isMC, cutSetPi->GetMonitorOutput());
102 AddMonitorOutput(isMC, cutSetK->GetMonitorOutput());
105 // -- Values ------------------------------------------------------------------------------------
106 /* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
107 /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
108 /* transv. momentum */ Int_t ptID = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
109 /* centrality */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
110 /* pseudorapidity */ Int_t etaID = task->CreateValue(AliRsnMiniValue::kEta, kFALSE);
111 /* rapidity */ Int_t yID = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
113 // -- Create all needed outputs -----------------------------------------------------------------
114 // use an array for more compact writing, which are different on mixing and charges
119 Bool_t use [10] = { !IsMcTrueOnly, !IsMcTrueOnly, !IsMcTrueOnly, !IsMcTrueOnly , !IsMcTrueOnly, !IsMcTrueOnly, isMC , isMC , isMC , isMC };
120 Bool_t useIM [10] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 };
121 TString name [10] = {"UnlikePM", "UnlikeMP", "MixingPM", "MixingMP", "LikePP", "LikeMM", "TruesPM", "TruesMP", "ResPM" , "ResMP" };
122 TString comp [10] = {"PAIR" , "PAIR" , "MIX" , "MIX" , "PAIR" , "PAIR" , "TRUE" , "TRUE" , "TRUE" , "TRUE" };
123 //TString output [10] = {"HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" };
124 TString output [10] = {"SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" };
125 Char_t charge1 [10] = {'+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' };
126 Char_t charge2 [10] = {'-' , '+' , '-' , '+' , '+' , '-' , '-' , '+' , '-' , '+' };
127 Int_t cutID1 [10] = { iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK };
128 Int_t cutID2 [10] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi };
130 for (Int_t i = 0; i < 10; i++) {
131 if (!use[i]) continue;
132 if(Pdg > 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar1_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
133 if(Pdg < 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar2_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
134 out->SetCutID(0, cutID1[i]);
135 out->SetCutID(1, cutID2[i]);
136 out->SetDaughter(0, AliRsnDaughter::kKaon);
137 out->SetDaughter(1, AliRsnDaughter::kPion);
138 out->SetCharge(0, charge1[i]);
139 out->SetCharge(1, charge2[i]);
140 out->SetMotherPDG(Pdg);//313
141 out->SetMotherMass(0.89594);
142 out->SetPairCuts(cutsPair);
144 // axis X: invmass (or resolution)
146 out->AddAxis(imID, 90, 0.6, 1.5);
148 //out->AddAxis(resID, 200, -0.02, 0.02);
150 // axis Y: transverse momentum
151 out->AddAxis(ptID, 300, 0.0, 30.0);
153 // axis Z: centrality-multiplicity
155 out->AddAxis(centID, 100, 0.0, 100.0);
157 out->AddAxis(centID, 400, 0.0, 400.0);
159 // axis W: pseudorapidity
160 // out->AddAxis(etaID, 20, -1.0, 1.0);
162 //out->AddAxis(yID, 32, -0.8, 0.8);
169 if(Pdg > 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother1%s", suffix), "SPARSE", "MOTHER");}
170 if(Pdg < 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother2%s", suffix), "SPARSE", "MOTHER");}
171 outm->SetDaughter(0, AliRsnDaughter::kKaon);
172 outm->SetDaughter(1, AliRsnDaughter::kPion);
173 outm->SetMotherPDG(Pdg);//313
174 outm->SetMotherMass(0.89594);
176 outm->SetPairCuts(cutsPair);
178 outm->AddAxis(imID, 90, 0.6, 1.5);
179 outm->AddAxis(ptID, 300, 0.0, 30.0);
181 outm->AddAxis(centID, 100, 0.0, 100.0);
183 outm->AddAxis(centID, 400, 0.0, 400.0);
185 //outm->AddAxis(yID, 32, -0.8, 0.8);