]>
Commit | Line | Data |
---|---|---|
aec68607 | 1 | #ifndef __CINT__\r |
2 | #include <AliRsnValuePair.h>\r | |
3 | #endif\r | |
4 | \r | |
5 | void AddRsnPairsRho(AliAnalysisTaskSE *task,\r | |
6 | Bool_t isMC,\r | |
7 | Bool_t isMixing,\r | |
8 | AliPID::EParticleType pType1,\r | |
9 | Int_t listID1,\r | |
10 | AliPID::EParticleType pType2,\r | |
11 | Int_t listID2,\r | |
12 | AliRsnCutSet *cutsEvent=0,\r | |
13 | AliRsnCutSet *cutsPair=0,\r | |
14 | TString suffix = "") {\r | |
15 | \r | |
16 | Printf("id1=%d id2=%d",listID1,listID2);\r | |
17 | \r | |
18 | // retrieve mass from PDG database\r | |
19 | \r | |
20 | // pdg rho = 133\r | |
21 | // pdg omega = 223\r | |
22 | // pdg eta = 221\r | |
23 | // pdg eta' = 331\r | |
24 | // pdg kshort = 310\r | |
25 | \r | |
26 | Int_t pdg = 113;\r | |
27 | TDatabasePDG *db = TDatabasePDG::Instance();\r | |
28 | TParticlePDG *part = db->GetParticle(pdg);\r | |
29 | Double_t mass = part->Mass();\r | |
30 | Bool_t valid;\r | |
31 | Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);\r | |
32 | \r | |
33 | if (isRsnMini) {\r | |
34 | AddPairOutputMiniRho(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsPair,suffix);\r | |
35 | } else {\r | |
36 | // this function is common and it is located in RsnConfig.C\r | |
37 | // as ouptup AddPairOutputPhi from this macro will be taken\r | |
38 | AddPair(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsEvent,cutsPair,suffix);\r | |
39 | }\r | |
40 | }\r | |
41 | void AddPairOutputRho(AliRsnLoopPair *pair)\r | |
42 | {\r | |
43 | Bool_t valid;\r | |
44 | Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid);\r | |
45 | \r | |
46 | // axes\r | |
47 | AliRsnValuePair *axisIM = new AliRsnValuePair("IM", AliRsnValuePair::kInvMass);\r | |
48 | AliRsnValuePair *axisPt = new AliRsnValuePair("PT", AliRsnValuePair::kPt);\r | |
49 | AliRsnValuePair *axisEta = new AliRsnValuePair("ETA", AliRsnValuePair::kEta);\r | |
50 | axisIM ->SetBins(180, 0.2, 2.0);\r | |
51 | // axisIM ->SetBins(1000, 0.9, 1.9);\r | |
52 | axisPt ->SetBins(100, 0.0, 12.0);\r | |
53 | axisEta ->SetBins(100, -2.0, 2.0);\r | |
54 | axisY ->SetBins(100,-2.0, 2.0);\r | |
55 | \r | |
56 | // output: 2D histogram of inv. mass vs. pt\r | |
57 | AliRsnListOutput *outPair = 0;\r | |
58 | if (!isFullOutput) {\r | |
59 | outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoDefault);\r | |
60 | outPair->AddValue(axisIM);\r | |
61 | } else {\r | |
62 | outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoSparse);\r | |
63 | outPair->AddValue(axisIM);\r | |
64 | outPair->AddValue(axisPt);\r | |
65 | outPair->AddValue(axisEta);\r | |
66 | outPair->AddValue(axisY);\r | |
67 | }\r | |
68 | // add outputs to loop\r | |
69 | pair->AddOutput(outPair);\r | |
70 | }\r | |
71 | \r | |
72 | void AddPairOutputMiniRho(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 = "") {\r | |
73 | \r | |
74 | Bool_t valid;\r | |
75 | Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid);\r | |
76 | Int_t useMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid);\r | |
77 | Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);\r | |
78 | \r | |
79 | AliRsnMiniAnalysisTask *taskRsnMini = (AliRsnMiniAnalysisTask *)task;\r | |
80 | \r | |
81 | /* invariant mass */ Int_t imID = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);\r | |
82 | /* IM resolution */ Int_t resID = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMassDiff, kTRUE);\r | |
83 | /* transv. momentum */ Int_t ptID = taskRsnMini->CreateValue(AliRsnMiniValue::kPt, kFALSE);\r | |
84 | /* centrality */ Int_t centID = taskRsnMini->CreateValue(AliRsnMiniValue::kMult, kFALSE);\r | |
85 | /* eta */ Int_t etaID = taskRsnMini->CreateValue(AliRsnMiniValue::kEta, kFALSE);\r | |
86 | /* y */ Int_t yID = taskRsnMini->CreateValue(AliRsnMiniValue::kY, kFALSE);\r | |
87 | \r | |
88 | \r | |
89 | // use an array for more compact writing, which are different on mixing and charges\r | |
90 | // [0] = unlike\r | |
91 | // [1] = mixing\r | |
92 | // [2] = like ++\r | |
93 | // [3] = like --\r | |
94 | Bool_t use [5] = { 1 , useMixing , 1 , 1 , isMC };\r | |
95 | TString name [5] = {"Unlike", "Mixing", "LikePP", "LikeMM", "Trues"};\r | |
96 | TString comp [5] = {"PAIR" , "MIX" , "PAIR" , "PAIR" , "TRUE" };\r | |
97 | Char_t charge1 [5] = {'+' , '+' , '+' , '-' , '+' };\r | |
98 | Char_t charge2 [5] = {'-' , '-' , '+' , '-' , '-' };\r | |
99 | \r | |
100 | // common definitions\r | |
101 | TString outputType = "HIST";\r | |
102 | if (isFullOutput) outputType = "SPARSE";\r | |
103 | \r | |
104 | Int_t nIM = 1000; Double_t minIM = 0.2, maxIM = 1.2;\r | |
105 | Int_t nEta = 100; Double_t minEta = -2.0, maxEta = 2.0;\r | |
106 | Int_t nY = 100; Double_t minY = -2.0,maxY = 2.0;\r | |
107 | // Int_t nIM = 1000; Double_t minIM = 0.9, maxIM = 1.9;\r | |
108 | Int_t nPt = 100; Double_t minPt = 0.0, maxPt = 12.0;\r | |
109 | Int_t nCent = 100; Double_t minCent = 0.0, maxCent = 100.0;\r | |
110 | Int_t nRes = 200; Double_t maxRes = 0.01;\r | |
111 | \r | |
112 | // retrieve mass from PDG database\r | |
113 | Int_t pdg = 113;\r | |
114 | TDatabasePDG *db = TDatabasePDG::Instance();\r | |
115 | TParticlePDG *part = db->GetParticle(pdg);\r | |
116 | \r | |
117 | \r | |
118 | Printf(suffix.Data());\r | |
119 | // create standard outputs\r | |
120 | for (Int_t i = 0; i < 5; i++) {\r | |
121 | if (!use[i]) continue;\r | |
122 | // create output\r | |
123 | AliRsnMiniOutput *out = taskRsnMini->CreateOutput(Form("%s_%s", suffix.Data(),name[i].Data() ), outputType.Data(), comp[i].Data());\r | |
124 | // selection settings\r | |
125 | out->SetCutID(0, listID1);\r | |
126 | out->SetCutID(1, listID1);\r | |
127 | out->SetDaughter(0, AliRsnDaughter::kPion);\r | |
128 | out->SetDaughter(1, AliRsnDaughter::kPion);\r | |
129 | out->SetCharge(0, charge1[i]);\r | |
130 | out->SetCharge(1, charge2[i]);\r | |
131 | out->SetMotherPDG(pdg);\r | |
132 | out->SetMotherMass(part->Mass());\r | |
133 | // pair cuts\r | |
134 | if (cutsPair) out->SetPairCuts(cutsPair);\r | |
135 | // axis X: invmass\r | |
136 | out->AddAxis(imID, nIM, minIM, maxIM);\r | |
137 | \r | |
138 | if (isFullOutput) {\r | |
139 | // axis Y: transverse momentum\r | |
140 | out->AddAxis(ptID, nPt, minPt, maxPt);\r | |
141 | out->AddAxis(etaID, nEta, minEta, maxEta);\r | |
142 | out->AddAxis(yID, nY, minY, maxY);\r | |
143 | \r | |
144 | // axis Z: centrality\r | |
145 | if (collisionType==1) out->AddAxis(centID, nCent, minCent, maxCent);\r | |
146 | }\r | |
147 | }\r | |
148 | \r | |
149 | // add output for resolution\r | |
150 | if (isMC) {\r | |
151 | AliRsnMiniOutput *outRes = taskRsnMini->CreateOutput(Form("rho_Res%s", suffix.Data()), outputType.Data(), "TRUE");\r | |
152 | // selection settings\r | |
153 | outRes->SetCutID(0, listID1);\r | |
154 | outRes->SetCutID(1, listID1);\r | |
155 | outRes->SetDaughter(0, AliRsnDaughter::kPion);\r | |
156 | outRes->SetDaughter(1, AliRsnDaughter::kPion);\r | |
157 | outRes->SetCharge(0, '+');\r | |
158 | outRes->SetCharge(1, '-');\r | |
159 | outRes->SetMotherPDG(pdg);\r | |
160 | outRes->SetMotherMass(part->Mass());\r | |
161 | // pair cuts\r | |
162 | if (cutsPair) outRes->SetPairCuts(cutsPair);\r | |
163 | // axis X: resolution\r | |
164 | outRes->AddAxis(resID, nRes, -maxRes, maxRes);\r | |
165 | \r | |
166 | if (isFullOutput) {\r | |
167 | // axis Y: transverse momentum\r | |
168 | outRes->AddAxis(ptID, nPt, minPt, maxPt);\r | |
169 | outRes->AddAxis(etaID, nEta, minEta, maxEta);\r | |
170 | // axis Z: centrality\r | |
171 | if (collisionType==1) outRes->AddAxis(centID, nCent, minCent, maxCent);\r | |
172 | }\r | |
173 | }\r | |
174 | \r | |
175 | //\r | |
176 | // -- Create output for MC generated ------------------------------------------------------------\r | |
177 | //\r | |
178 | \r | |
179 | if (isMC) {\r | |
180 | // create ouput\r | |
181 | AliRsnMiniOutput *outMC = taskRsnMini->CreateOutput(Form("rho_MCGen%s", suffix.Data()), outputType.Data(), "MOTHER");\r | |
182 | // selection settings\r | |
183 | outMC->SetDaughter(0, AliRsnDaughter::kPion);\r | |
184 | outMC->SetDaughter(1, AliRsnDaughter::kPion);\r | |
185 | outMC->SetMotherPDG(pdg);\r | |
186 | outMC->SetMotherMass(part->Mass());\r | |
187 | // pair cuts\r | |
188 | if (cutsPair) outMC->SetPairCuts(cutsPair);\r | |
189 | // axis X: invmass\r | |
190 | outMC->AddAxis(imID, nIM, minIM, maxIM);\r | |
191 | if (isFullOutput) {\r | |
192 | // axis Y: transverse momentum\r | |
193 | outMC->AddAxis(ptID, nPt, minPt, maxPt);\r | |
194 | outMC->AddAxis(etaID, nEta, minEta, maxEta);\r | |
195 | outRes->AddAxis(yID, nY, minY, maxY);\r | |
196 | // axis Z: centrality\r | |
197 | if (collisionType==1) outMC->AddAxis(centID, nCent, minCent, maxCent);\r | |
198 | }\r | |
199 | }\r | |
200 | \r | |
201 | \r | |
202 | }\r |