]>
Commit | Line | Data |
---|---|---|
221dc8d3 | 1 | #ifndef __CINT__ |
2 | #endif | |
3 | void AddRsnPairsLambda(AliAnalysisTaskSE *task, | |
e22320ab | 4 | Bool_t isMC, |
5 | Bool_t isMixing, | |
6 | AliPID::EParticleType pType1, | |
7 | Int_t listID1, | |
8 | AliPID::EParticleType pType2, | |
9 | Int_t listID2, | |
10 | AliRsnCutSet *cutsEvent=0, | |
11 | AliRsnCutSet *cutsPair=0, | |
12 | TString suffix = "") { | |
221dc8d3 | 13 | |
14 | Printf("id1=%d id2=%d",listID1,listID2); | |
15 | ||
16 | // retrieve mass from PDG database | |
17 | Int_t pdg = 3124; | |
18 | Double_t mass = 1.5195; | |
e22320ab | 19 | |
221dc8d3 | 20 | Bool_t valid; |
21 | Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid); | |
22 | if (isRsnMini) { | |
23 | AddPairOutputMiniLambda(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsPair,suffix); | |
24 | } else { | |
25 | // this function is common and it is located in RsnConfig.C | |
26 | // as ouptup AddPairOutputLambda from this macro will be taken | |
27 | AddPair(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsEvent,cutsPair,suffix); | |
28 | } | |
29 | } | |
30 | void AddPairOutputLambda(AliRsnLoopPair *pair) | |
31 | { | |
32 | Bool_t valid; | |
33 | Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid); | |
3b2f3caf | 34 | Int_t useRapidity = AliRsnTrainManager::GetGlobalInt("RsnUseRapidity",valid); |
221dc8d3 | 35 | |
36 | // axes | |
37 | AliRsnValuePair *axisIM = new AliRsnValuePair("IM", AliRsnValuePair::kInvMass); | |
38 | AliRsnValuePair *axisPt = new AliRsnValuePair("PT", AliRsnValuePair::kPt); | |
3b2f3caf | 39 | AliRsnValuePair *axisRapidity = new AliRsnValuePair("Y", AliRsnValuePair::kY); |
40 | axisIM ->SetBins(570, 1.43, 2.0); | |
221dc8d3 | 41 | axisPt ->SetBins(120, 0.0, 12.0); |
3b2f3caf | 42 | axisRapidity->SetBins(1,-0.5,0.5); |
221dc8d3 | 43 | |
44 | // output: 2D histogram of inv. mass vs. pt | |
45 | AliRsnListOutput *outPair = 0; | |
46 | if (!isFullOutput) { | |
47 | outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoDefault); | |
48 | outPair->AddValue(axisIM); | |
49 | } else { | |
50 | outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoSparse); | |
51 | outPair->AddValue(axisIM); | |
52 | outPair->AddValue(axisPt); | |
3b2f3caf | 53 | if (useRapidity) outPair->AddValue(axisRapidity); |
221dc8d3 | 54 | } |
55 | // add outputs to loop | |
56 | pair->AddOutput(outPair); | |
57 | } | |
58 | ||
59 | void AddPairOutputMiniLambda(AliAnalysisTaskSE *task,Bool_t isMC,Bool_t isMixing, AliPID::EParticleType pType1,Int_t listID1, AliPID::EParticleType pType2,Int_t listID2, Int_t pdgMother,Double_t massMother, AliRsnCutSet *cutsPair=0,TString suffix = "") { | |
60 | ||
61 | Bool_t valid; | |
62 | Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid); | |
63 | Int_t useMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid); | |
3b2f3caf | 64 | Int_t useRapidity = AliRsnTrainManager::GetGlobalInt("RsnUseRapidity",valid); |
e22320ab | 65 | |
221dc8d3 | 66 | AliRsnMiniAnalysisTask *taskRsnMini = (AliRsnMiniAnalysisTask *)task; |
67 | /* invariant mass */ Int_t imID = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMass, kFALSE); | |
68 | /* IM resolution */ Int_t resID = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE); | |
69 | /* transv. momentum */ Int_t ptID = taskRsnMini->CreateValue(AliRsnMiniValue::kPt, kFALSE); | |
70 | /* centrality */ Int_t centID = taskRsnMini->CreateValue(AliRsnMiniValue::kMult, kFALSE); | |
3b2f3caf | 71 | /* rapidity */ Int_t yID = taskRsnMini->CreateValue(AliRsnMiniValue::kY, kFALSE); |
221dc8d3 | 72 | |
73 | // | |
74 | // -- Create all needed outputs ----------------------------------------------------------------- | |
75 | // | |
76 | ||
77 | Int_t iCutK = listID1; | |
78 | Int_t iCutPi = listID2; | |
79 | ||
80 | // common definitions | |
81 | TString outputType = "HIST"; | |
82 | if (isFullOutput) outputType = "SPARSE"; | |
83 | ||
84 | // use an array for more compact writing, which are different on mixing and charges | |
85 | // [0] = unlike | |
86 | // [1] = mixing | |
87 | // [2] = like ++ | |
88 | // [3] = like -- | |
89 | Bool_t use [12] = { 1 , 1 , useMixing , useMixing , 1 , 1 , isMC , isMC , isMC , isMC , isMC , isMC }; | |
90 | Bool_t useIM [12] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 1 , 1 }; | |
91 | TString name [12] = {"Unlike1", "Unlike2", "Mixing1", "Mixing2", "LikePP", "LikeMM", "Trues1", "Trues2", "Res1" , "Res2" ,"Mother1", "Mother2"}; | |
92 | TString comp [12] = {"PAIR" , "PAIR" , "MIX" , "MIX" , "PAIR" , "PAIR" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "MOTHER", "MOTHER"}; | |
93 | Char_t charge1 [12] = {'+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' }; | |
94 | Char_t charge2 [12] = {'-' , '+' , '-' , '+' , '+' , '-' , '-' , '+' , '-' , '+' , '-' , '+' }; | |
95 | Int_t cutID1 [12] = { iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK }; | |
96 | Int_t cutID2 [12] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi }; | |
97 | ||
98 | for (Int_t i = 0; i < 12; i++) { | |
99 | if (!use[i]) continue; | |
100 | // create output | |
101 | AliRsnMiniOutput *out = taskRsnMini->CreateOutput(Form("%s_%s", suffix.Data(), name[i].Data()), outputType.Data(), comp[i].Data()); | |
102 | // selection settings | |
103 | out->SetCutID(0, cutID1[i]); | |
104 | out->SetCutID(1, cutID2[i]); | |
105 | out->SetDaughter(0, AliRsnDaughter::kProton); | |
106 | out->SetDaughter(1, AliRsnDaughter::kKaon); | |
107 | out->SetCharge(0, charge1[i]); | |
108 | out->SetCharge(1, charge2[i]); | |
109 | out->SetMotherPDG(pdgMother); | |
110 | out->SetMotherMass(massMother); | |
111 | // pair cuts | |
112 | if (cutsPair) out->SetPairCuts(cutsPair); | |
113 | // axis X: invmass (or resolution) | |
114 | if (useIM[i]) | |
3b2f3caf | 115 | out->AddAxis(imID, 570, 1.43, 2.0); |
221dc8d3 | 116 | else |
117 | out->AddAxis(resID, 200, -0.02, 0.02); | |
118 | ||
119 | if (isFullOutput) { | |
120 | // axis Y: transverse momentum | |
121 | out->AddAxis(ptID, 100, 0.0, 10.0); | |
3b2f3caf | 122 | if (useRapidity) out->AddAxis(yID, 1, -0.5, 0.5); |
221dc8d3 | 123 | // axis Z: centrality |
124 | out->AddAxis(centID, 100, 0.0, 100.0); | |
125 | } | |
126 | } | |
127 | ||
128 | } |