]>
Commit | Line | Data |
---|---|---|
e455cba6 | 1 | /*************************************************************************** |
2 | ||
3 | / | |
4 | // A configuration script for RSN package needs to define the followings: | |
5 | // | |
6 | // (1) decay tree of each resonance to be studied, which is needed to select | |
7 | // true pairs and to assign the right mass to all candidate daughters | |
8 | // (2) cuts at all levels: single daughters, tracks, events | |
9 | // (3) output objects: histograms or trees | |
10 | ****************************************************************************/ | |
11 | ||
12 | Bool_t ConfigLambdaStarPbPb | |
13 | ( | |
14 | AliRsnMiniAnalysisTask *task, | |
15 | Bool_t isMC , | |
16 | Bool_t isPP , | |
17 | const char *suffix, | |
18 | AliRsnCutSet *cutsPair, | |
19 | Int_t aodFilterBit = 5, | |
e455cba6 | 20 | AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutPrCandidate = AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010, |
21 | AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutKaCandidate = AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010, | |
e455cba6 | 22 | Float_t nsigmaPr = 2.0, |
23 | Float_t nsigmaKa = 2.0, | |
24 | Bool_t enableMonitor = kTRUE, | |
25 | Bool_t IsMcTrueOnly = kFALSE, | |
26 | Int_t aodN = 0 | |
27 | ) | |
28 | { | |
29 | // manage suffix | |
30 | if (strlen(suffix) > 0) suffix = Form("_%s", suffix); | |
31 | ||
32 | // set daughter cuts | |
33 | AliRsnCutSetDaughterParticle * cutSetQ; | |
34 | AliRsnCutSetDaughterParticle * cutSetPr; | |
35 | AliRsnCutSetDaughterParticle * cutSetK; | |
36 | ||
37 | cutSetQ = new AliRsnCutSetDaughterParticle("cutQuality", AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kKaon, -1.0, aodFilterBit); | |
ad4155d3 | 38 | cutSetPr = new AliRsnCutSetDaughterParticle(Form("cutProtonTPCPbPb_%2.1fsigma",nsigmaPr), cutPrCandidate, AliPID::kProton, nsigmaPr, aodFilterBit); |
39 | cutSetK = new AliRsnCutSetDaughterParticle(Form("cutKaonTPCPbPb_%2.1f2sigma",nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit); | |
e455cba6 | 40 | |
41 | Int_t iCutQ = task->AddTrackCuts(cutSetQ); | |
42 | Int_t iCutPr = task->AddTrackCuts(cutSetPr); | |
43 | Int_t iCutK = task->AddTrackCuts(cutSetK); | |
44 | ||
45 | if(enableMonitor){ | |
46 | Printf("======== Monitoring cut AliRsnCutSetDaughterParticle enabled"); | |
ad4155d3 | 47 | gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C"); |
e455cba6 | 48 | AddMonitorOutput(isMC, cutSetQ->GetMonitorOutput()); |
49 | AddMonitorOutput(isMC, cutSetPr->GetMonitorOutput()); | |
50 | AddMonitorOutput(isMC, cutSetK->GetMonitorOutput()); | |
51 | } | |
52 | ||
53 | // -- Values ------------------------------------------------------------------------------------ | |
54 | /* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE); | |
55 | /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE); | |
56 | /* transv. momentum */ Int_t ptID = task->CreateValue(AliRsnMiniValue::kPt, kFALSE); | |
57 | /* centrality */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE); | |
58 | /* pseudorapidity */ Int_t etaID = task->CreateValue(AliRsnMiniValue::kEta, kFALSE); | |
59 | /* rapidity */ Int_t yID = task->CreateValue(AliRsnMiniValue::kY, kFALSE); | |
60 | ||
61 | // -- Create all needed outputs ----------------------------------------------------------------- | |
62 | // use an array for more compact writing, which are different on mixing and charges | |
63 | // [0] = unlike | |
64 | // [1] = mixing | |
65 | // [2] = like ++ | |
66 | // [3] = like -- | |
67 | Bool_t use [10] = { !IsMcTrueOnly, !IsMcTrueOnly, !IsMcTrueOnly, !IsMcTrueOnly , !IsMcTrueOnly, !IsMcTrueOnly, isMC , isMC , isMC , isMC }; | |
68 | Bool_t useIM [10] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 }; | |
69 | TString name [10] = {"UnlikePM", "UnlikeMP", "MixingPM", "MixingMP", "LikePP", "LikeMM", "TruesPM", "TruesMP", "ResPM" , "ResMP" }; | |
70 | TString comp [10] = {"PAIR" , "PAIR" , "MIX" , "MIX" , "PAIR" , "PAIR" , "TRUE" , "TRUE" , "TRUE" , "TRUE" }; | |
71 | //TString output [10] = {"HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" }; | |
72 | TString output [10] = {"SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" }; | |
73 | Char_t charge1 [10] = {'+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' }; | |
74 | Char_t charge2 [10] = {'-' , '+' , '-' , '+' , '+' , '-' , '-' , '+' , '-' , '+' }; | |
75 | Int_t cutID1 [10] = { iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK }; | |
76 | Int_t cutID2 [10] = { iCutPr , iCutPr , iCutPr , iCutPr ,iCutPr , iCutPr , iCutPr , iCutPr , iCutPr , iCutPr }; | |
77 | ||
78 | for (Int_t i = 0; i < 10; i++) { | |
79 | if (!use[i]) continue; | |
80 | AliRsnMiniOutput *out = task->CreateOutput(Form("lstar_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data()); | |
81 | out->SetCutID(0, cutID1[i]); | |
82 | out->SetCutID(1, cutID2[i]); | |
83 | out->SetDaughter(0, AliRsnDaughter::kKaon); | |
84 | out->SetDaughter(1, AliRsnDaughter::kProton); | |
85 | out->SetCharge(0, charge1[i]); | |
86 | out->SetCharge(1, charge2[i]); | |
87 | out->SetMotherPDG(3124); | |
88 | out->SetMotherMass(1.520); | |
89 | out->SetPairCuts(cutsPair); | |
90 | ||
91 | // axis X: invmass (or resolution) | |
92 | if (useIM[i]) | |
93 | out->AddAxis(imID, 900, 1.3, 2.2); | |
94 | //else | |
95 | //out->AddAxis(resID, 200, -0.02, 0.02); | |
96 | ||
97 | // axis Y: transverse momentum | |
d2af2fde | 98 | out->AddAxis(ptID, 500, 0.0, 50.0); |
e455cba6 | 99 | |
100 | // axis Z: centrality-multiplicity | |
101 | if (!isPP) | |
102 | out->AddAxis(centID, 100, 0.0, 100.0); | |
103 | else | |
104 | out->AddAxis(centID, 400, 0.0, 400.0); | |
105 | ||
106 | // axis W: pseudorapidity | |
107 | // out->AddAxis(etaID, 20, -1.0, 1.0); | |
108 | // axis J: rapidity | |
109 | // out->AddAxis(yID, 10, -0.5, 0.5); | |
110 | ||
111 | } | |
112 | return kTRUE; | |
113 | } |