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 Interpolate6080(Int_t pdg) ;
13 void ExtrapolateWithConstantRatioToPions(Int_t pdg, TString centrOrigin, TString centrDest);
14 Int_t collSystem = -1;
17 void InterpolateRatiosAndYields() {
18 #if !(!defined (__CINT__) || (defined(__MAKECINT__)))
21 collSystem = 2; energy =2760;
22 // *************** pi, K, pr *****************
23 arr= AliParticleYield::ReadFromASCIIFile("PbPb_2760_PiKaPr.txt");
24 // Interpolate0010(211);
25 // Interpolate0010(-211);
26 // Interpolate0010(321);
27 // Interpolate0010(-321);
28 // Interpolate0010(2212);
29 // Interpolate0010(-2212);
30 // InterpolateRatios(2212,211);
31 // InterpolateRatios(321,211);
32 // Interpolate6080(211);
33 // Interpolate6080(-211);
34 // Interpolate6080(2212);
35 // Interpolate6080(-2212);
37 Interpolate6080(-321);
38 // InterpolateRatios(2212,211, "V0M6070", "V0M7080", "V0M6080");
39 // InterpolateRatios(321,211, "V0M6070", "V0M7080", "V0M6080");
41 // *************** Lambda and K0 *****************
42 // arr= AliParticleYield::ReadFromASCIIFile("PbPb_2760_LambdaK0.txt");
43 // Interpolate0010(3122);
44 // Interpolate0010(310);
45 // *************** Helium 3 *****************
46 // arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_DeuHelium3.txt");
47 // arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("./PbPb_2760_AveragedNumbers.txt"));
48 // ExtrapolateWithConstantRatioToPions(1000020030, "V0M0020", "V0M0010");
49 // *************** Kstar *****************
50 // arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_Kstar892.txt");
51 // arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("./PbPb_2760_AveragedNumbers.txt"));
52 // ExtrapolateWithConstantRatioToPions(313, "V0M0020", "V0M0010");
54 // *************** pPb, deuteron *********************
55 // collSystem = 1; energy = 5020;
57 //arr = AliParticleYield::ReadFromASCIIFile("pPb_5020_PiKaPrLamndaK0.txt");
58 // Interpolate0010(211);
59 // Interpolate0010(-211);
60 // 2. Extrapolate the deuteron
61 // arr = AliParticleYield::ReadFromASCIIFile("pPb_5020_deuteron.txt");
62 // arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("pPb_5020_PiKaPrLamndaK0.txt"));
63 // ExtrapolateWithConstantRatioToPions(1000010020, "V0A0010", "V0A0005");
64 // ExtrapolateWithConstantRatioToPions(-1000010020, "V0A0010", "V0A0005");
70 AliParticleYield * p0 = AliParticleYield::FindParticle(arr, 211, 2, 2760., "V0M0005");
71 // p0 = AliParticleYield::Add(p0, AliParticleYield::FindParticle(arr, -211, 2, 2760., "V0M0005"));
72 AliParticleYield * p2 = AliParticleYield::FindParticle(arr, 2212, 2, 2760., "V0M0005");
73 // p2 = AliParticleYield::Add(p2,AliParticleYield::FindParticle(arr, -2212, 2, 2760., "V0M0005"));
74 AliParticleYield *pratio = AliParticleYield::Divide(p2,p0);
76 AliParticleYield::FindRatio(arr, 2212, 211, 2, 2760, "V0M0005")->Print();
80 void Interpolate0010(Int_t pdg) {
82 TString centrPrefix = collSystem == 2 ? "V0M" : "V0A";
84 AliParticleYield * p0 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"0005");
85 AliParticleYield * p1 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"0510");
88 AliParticleYield * pav = AliParticleYield::Add(p0,p1);
89 std::cout << pav->GetYield() << ", " << pav->GetStatError() << ", "<< pav->GetSystError() << std::endl;
93 void Interpolate6080(Int_t pdg) {
95 TString centrPrefix = collSystem == 2 ? "V0M" : "V0A";
97 AliParticleYield * p0 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"6070");
98 AliParticleYield * p1 = AliParticleYield::FindParticle(arr, pdg, collSystem, energy, centrPrefix+"7080");
101 AliParticleYield * pav = AliParticleYield::Add(p0,p1);
102 std::cout << pav->GetYield() << ", " << pav->GetStatError() << ", "<< pav->GetSystError() << std::endl;
107 void InterpolateRatios(Int_t pdg1, Int_t pdg2, TString centr1, TString centr2, TString centrfinal) {
109 AliParticleYield * ratio[2];
110 ratio[0] = AliParticleYield::FindRatio(arr, pdg1, pdg2, 2, 2760., centr1, 1);
111 ratio[1] = AliParticleYield::FindRatio(arr, pdg1, pdg2, 2, 2760., centr2, 1);
112 AliParticleYield * average = AliParticleYield::Add(ratio[0], ratio[1]);
114 AliParticleYield * pi[2];
115 pi[0] = AliParticleYield::FindParticle(arr, pdg2, 2, 2760., centr1, 0);
116 pi[0] = AliParticleYield::Add(pi[0],AliParticleYield::FindParticle(arr, -pdg2, 2, 2760., centr1, 0));
117 pi[1] = AliParticleYield::FindParticle(arr, pdg2, 2, 2760., centr2, 0);
118 pi[1] = AliParticleYield::Add(pi[1],AliParticleYield::FindParticle(arr, -pdg2, 2, 2760., centr2, 0));
121 // Scale to get protons with errors corresponding to the ratio
122 ratio[0]->Scale(pi[0]->GetYield()) ;
123 ratio[1]->Scale(pi[1]->GetYield()) ;
125 ratio[0]->Add(ratio[0], ratio[1]);
126 pi[0]->Add(pi[0],pi[1]);
127 pi[0]->SetNormError(0);
128 pi[0]->SetStatError(0);
129 pi[0]->SetSystError(0);
131 ratio[0]->Scale(1./pi[0]->GetYield());
132 ratio[0]->SetCentr(centrfinal);
141 void ExtrapolateWithConstantRatioToPions(Int_t pdg, TString centrOrigin, TString centrDest) {
143 AliParticleYield * part = AliParticleYield::FindParticle(arr, pdg,collSystem, energy, centrOrigin);
144 AliParticleYield * pionOrigin = AliParticleYield::FindParticle(arr, 211,collSystem, energy, centrOrigin);
145 AliParticleYield * pionDest = AliParticleYield::FindParticle(arr, 211,collSystem, energy, centrDest);
146 if(!part || !pionOrigin | !pionDest) {
149 // The pion yield is takes
150 part->Scale (1./pionOrigin->GetYield());
151 part->Scale (pionDest->GetYield());
152 part->SetCentr(centrDest);
153 part->SetMeasurementType(part->GetMeasurementType() | AliParticleYield::kTypeExtrPionRatio);
155 // std::cout << "1" << std::endl;
156 TClonesArray * arrOut = new TClonesArray("AliParticleYield");
157 // std::cout << "2" << std::endl;
158 new((*arrOut)[0]) AliParticleYield(*part) ;
160 // std::cout << "3" << std::endl;
161 // std::cout << "4" << std::endl;
162 AliParticleYield::SaveAsASCIIFile(arrOut, "temp.txt");