1 #if !defined (__CINT__) || (defined(__MAKECINT__))
3 #include "TClonesArray.h"
4 #include "AliParticleYield.h"
9 void InterpolateRatios(Int_t pdg1, Int_t pdg2, TString centr1="V0M0005", TString centr2="V0M0510", TString centrfinal="V0M0010") ;
10 void Interpolate0010(Int_t pdg) ;
11 void Interpolate2040(Int_t pdg) ;
12 void Interpolate6080(Int_t pdg) ;
14 void ExtrapolateWithConstantRatioToPions(Int_t pdg, TString centrOrigin, TString centrDest);
15 Int_t collSystem = -1;
18 void InterpolateRatiosAndYields() {
19 #if !(!defined (__CINT__) || (defined(__MAKECINT__)))
22 collSystem = 2; energy =2760;
23 // *************** pi, K, pr *****************
24 arr= AliParticleYield::ReadFromASCIIFile("PbPb_2760_PiKaPr.txt");
25 // Interpolate0010(211);
26 // Interpolate0010(-211);
27 // Interpolate0010(321);
28 // Interpolate0010(-321);
29 // Interpolate0010(2212);
30 // Interpolate0010(-2212);
31 // InterpolateRatios(2212,211, "V0M0005", "V0M0510", "V0M0010");
32 // InterpolateRatios(321,211 , "V0M0005", "V0M0510", "V0M0010");
33 // Interpolate6080(211);
34 // Interpolate6080(-211);
35 // Interpolate6080(2212);
36 // Interpolate6080(-2212);
37 // Interpolate6080(321);
38 // Interpolate6080(-321);
39 // InterpolateRatios(2212,211, "V0M6070", "V0M7080", "V0M6080");
40 // InterpolateRatios(321,211, "V0M6070", "V0M7080", "V0M6080");
43 Interpolate2040(-211);
44 Interpolate2040(2212);
45 Interpolate2040(-2212);
47 Interpolate2040(-321);
49 // *************** Lambda and K0 *****************
50 // arr= AliParticleYield::ReadFromASCIIFile("PbPb_2760_LambdaK0.txt");
51 // Interpolate0010(3122);
52 // Interpolate0010(310);
53 // *************** Helium 3 *****************
54 // arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_DeuHelium3.txt");
55 // arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("./PbPb_2760_AveragedNumbers.txt"));
56 // ExtrapolateWithConstantRatioToPions(1000020030, "V0M0020", "V0M0010");
57 // *************** Kstar *****************
58 // arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_Kstar892.txt");
59 // arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("./PbPb_2760_AveragedNumbers.txt"));
60 // ExtrapolateWithConstantRatioToPions(313, "V0M0020", "V0M0010");
62 // *************** pPb, deuteron *********************
63 // collSystem = 1; energy = 5020;
65 //arr = AliParticleYield::ReadFromASCIIFile("pPb_5020_PiKaPrLamndaK0.txt");
66 // Interpolate0010(211);
67 // Interpolate0010(-211);
68 // 2. Extrapolate the deuteron
69 // arr = AliParticleYield::ReadFromASCIIFile("pPb_5020_deuteron.txt");
70 // arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("pPb_5020_PiKaPrLamndaK0.txt"));
71 // ExtrapolateWithConstantRatioToPions(1000010020, "V0A0010", "V0A0005");
72 // ExtrapolateWithConstantRatioToPions(-1000010020, "V0A0010", "V0A0005");
73 // ExtrapolateWithConstantRatioToPions(1000010020, "V0A6000", "V0A6080");
74 // ExtrapolateWithConstantRatioToPions(-1000010020, "V0A6000", "V0A6080");
80 AliParticleYield * p0 = AliParticleYield::FindParticle(arr, 211, 2, 2760., "V0M0005");
81 // p0 = AliParticleYield::Add(p0, AliParticleYield::FindParticle(arr, -211, 2, 2760., "V0M0005"));
82 AliParticleYield * p2 = AliParticleYield::FindParticle(arr, 2212, 2, 2760., "V0M0005");
83 // p2 = AliParticleYield::Add(p2,AliParticleYield::FindParticle(arr, -2212, 2, 2760., "V0M0005"));
84 AliParticleYield *pratio = AliParticleYield::Divide(p2,p0);
86 AliParticleYield::FindRatio(arr, 2212, 211, 2, 2760, "V0M0005")->Print();
90 void Interpolate0010(Int_t pdg) {
92 TString centrPrefix = collSystem == 2 ? "V0M" : "V0A";
94 AliParticleYield * p0 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"0005");
95 AliParticleYield * p1 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"0510");
98 AliParticleYield * pav = AliParticleYield::Add(p0,p1);
99 std::cout << pav->GetYield() << ", " << pav->GetStatError() << ", "<< pav->GetSystError() << std::endl;
103 void Interpolate6080(Int_t pdg) {
105 TString centrPrefix = collSystem == 2 ? "V0M" : "V0A";
107 AliParticleYield * p0 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"6070");
108 AliParticleYield * p1 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"7080");
111 AliParticleYield * pav = AliParticleYield::Add(p0,p1);
112 std::cout << pav->GetYield() << ", " << pav->GetStatError() << ", "<< pav->GetSystError() << std::endl;
117 void Interpolate2040(Int_t pdg) {
119 TString centrPrefix = collSystem == 2 ? "V0M" : "V0A";
121 AliParticleYield * p0 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"2030");
122 AliParticleYield * p1 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"3040");
125 AliParticleYield * pav = AliParticleYield::Add(p0,p1);
126 std::cout << pav->GetYield() << ", " << pav->GetStatError() << ", "<< pav->GetSystError() << std::endl;
131 void InterpolateRatios(Int_t pdg1, Int_t pdg2, TString centr1, TString centr2, TString centrfinal) {
133 // Get the ratios from the DB for the correct centralities
134 AliParticleYield * ratio[2];
135 ratio[0] = AliParticleYield::FindRatio(arr, pdg1, pdg2, 2, 2760., centr1, 1);
136 ratio[1] = AliParticleYield::FindRatio(arr, pdg1, pdg2, 2, 2760., centr2, 1);
138 AliParticleYield * average = AliParticleYield::Add(ratio[0], ratio[1]);
141 AliParticleYield * pi[2];
142 pi[0] = AliParticleYield::FindParticle(arr, pdg2, 2, 2760., centr1, 0);
143 pi[0] = AliParticleYield::Add(pi[0],AliParticleYield::FindParticle(arr, -pdg2, 2, 2760., centr1, 0));
144 pi[1] = AliParticleYield::FindParticle(arr, pdg2, 2, 2760., centr2, 0);
145 pi[1] = AliParticleYield::Add(pi[1],AliParticleYield::FindParticle(arr, -pdg2, 2, 2760., centr2, 0));
148 // Scale to get protons with errors corresponding to the ratio
149 ratio[0]->Scale(pi[0]->GetYield()) ;
150 ratio[1]->Scale(pi[1]->GetYield()) ;
152 ratio[0] = AliParticleYield::Add(ratio[0], ratio[1]);
153 pi[0] = AliParticleYield::Add(pi[0],pi[1]);
154 pi[0]->SetNormError(0);
155 pi[0]->SetStatError(0);
156 pi[0]->SetSystError(0);
158 ratio[0]->Scale(1./pi[0]->GetYield());
159 ratio[0]->SetCentr(centrfinal);
160 cout << "*** "<< ratio[0]->GetPartName() << " " << centrfinal << " ***"<< std::endl;
161 std::cout << "RATIO OF AVERAGE: " ;
162 ratio[0]->Print("justvalue");
164 std::cout << "AVERAGE OF RATIO: " ;
165 average->Print("justvalue");
170 void ExtrapolateWithConstantRatioToPions(Int_t pdg, TString centrOrigin, TString centrDest) {
172 AliParticleYield * part = AliParticleYield::FindParticle(arr, pdg,collSystem, energy, centrOrigin);
173 AliParticleYield * pionOrigin = AliParticleYield::FindParticle(arr, 211,collSystem, energy, centrOrigin);
174 AliParticleYield * pionDest = AliParticleYield::FindParticle(arr, 211,collSystem, energy, centrDest);
175 if(!part || !pionOrigin | !pionDest) {
178 // The pion yield is takes
179 part->Scale (1./pionOrigin->GetYield());
180 part->Scale (pionDest->GetYield());
181 part->SetCentr(centrDest);
182 part->SetMeasurementType(part->GetMeasurementType() | AliParticleYield::kTypeExtrPionRatio);
184 // std::cout << "1" << std::endl;
185 TClonesArray * arrOut = new TClonesArray("AliParticleYield");
186 // std::cout << "2" << std::endl;
187 new((*arrOut)[0]) AliParticleYield(*part) ;
189 // std::cout << "3" << std::endl;
190 // std::cout << "4" << std::endl;
191 AliParticleYield::SaveAsASCIIFile(arrOut, "temp.txt");