]>
Commit | Line | Data |
---|---|---|
9d84731e | 1 | #if !defined (__CINT__) || (defined(__MAKECINT__)) |
2 | #include <iostream> | |
3 | #include "TClonesArray.h" | |
4 | #include "AliParticleYield.h" | |
5 | ||
6 | #endif | |
7 | TClonesArray * arr =0; | |
8 | ||
9 | void InterpolateRatios(Int_t pdg1, Int_t pdg2) ; | |
10 | void Interpolate0010(Int_t pdg) ; | |
11 | void ExtrapolateWithConstantRatioToPions(Int_t pdg, TString centrOrigin, TString centrDest); | |
12 | ||
13 | ||
14 | void InterpolateRatiosAndYields() { | |
15 | #if !(!defined (__CINT__) || (defined(__MAKECINT__))) | |
16 | LoadLibs(); | |
17 | #endif | |
18 | // *************** pi, K, pr ***************** | |
19 | // arr= AliParticleYield::ReadFromASCIIFile("PbPb_2760_PiKaPr.txt"); | |
20 | // Interpolate0010(211); | |
21 | // Interpolate0010(-211); | |
22 | // Interpolate0010(321); | |
23 | // Interpolate0010(-321); | |
24 | // Interpolate0010(2212); | |
25 | // Interpolate0010(-2212); | |
26 | // InterpolateRatios(2212,211); | |
27 | // InterpolateRatios(321,211); | |
28 | // *************** Lambda and K0 ***************** | |
29 | // arr= AliParticleYield::ReadFromASCIIFile("PbPb_2760_LambdaK0.txt"); | |
30 | // Interpolate0010(3122); | |
31 | // Interpolate0010(310); | |
32 | // *************** Helium 3 ***************** | |
33 | // arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_DeuHelium3.txt"); | |
34 | // arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("./PbPb_2760_AveragedNumbers.txt")); | |
35 | // ExtrapolateWithConstantRatioToPions(1000020030, "V0M0020", "V0M0010"); | |
36 | // *************** Kstar ***************** | |
37 | arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_Kstar892.txt"); | |
38 | arr->AbsorbObjects(AliParticleYield::ReadFromASCIIFile("./PbPb_2760_AveragedNumbers.txt")); | |
39 | ExtrapolateWithConstantRatioToPions(313, "V0M0020", "V0M0010"); | |
40 | ||
41 | ||
42 | } | |
43 | ||
44 | void DUMP(){ | |
45 | AliParticleYield * p0 = AliParticleYield::FindParticle(arr, 211, 2, 2760., "V0M0005"); | |
46 | // p0 = AliParticleYield::Add(p0, AliParticleYield::FindParticle(arr, -211, 2, 2760., "V0M0005")); | |
47 | AliParticleYield * p2 = AliParticleYield::FindParticle(arr, 2212, 2, 2760., "V0M0005"); | |
48 | // p2 = AliParticleYield::Add(p2,AliParticleYield::FindParticle(arr, -2212, 2, 2760., "V0M0005")); | |
49 | AliParticleYield *pratio = AliParticleYield::Divide(p2,p0); | |
50 | pratio->Print(); | |
51 | AliParticleYield::FindRatio(arr, 2212, 211, 2, 2760, "V0M0005")->Print(); | |
52 | ||
53 | } | |
54 | ||
55 | void Interpolate0010(Int_t pdg) { | |
56 | ||
57 | AliParticleYield * p0 = AliParticleYield::FindParticle(arr, pdg, 2, 2760., "V0M0005"); | |
58 | AliParticleYield * p1 = AliParticleYield::FindParticle(arr, pdg, 2, 2760., "V0M0510"); | |
59 | p0->Scale(0.5); | |
60 | p1->Scale(0.5); | |
61 | AliParticleYield * pav = AliParticleYield::Add(p0,p1); | |
62 | std::cout << pav->GetYield() << ", " << pav->GetStatError() << ", "<< pav->GetSystError() << std::endl; | |
63 | ||
64 | ||
65 | } | |
66 | ||
67 | void InterpolateRatios(Int_t pdg1, Int_t pdg2) { | |
68 | ||
69 | AliParticleYield * ratio[2]; | |
70 | ratio[0] = AliParticleYield::FindRatio(arr, pdg1, pdg2, 2, 2760., "V0M0005", 1); | |
71 | ratio[1] = AliParticleYield::FindRatio(arr, pdg1, pdg2, 2, 2760., "V0M0510", 1); | |
72 | AliParticleYield * average = AliParticleYield::Add(ratio[0], ratio[1]); | |
73 | average->Scale(0.5); | |
74 | AliParticleYield * pi[2]; | |
75 | pi[0] = AliParticleYield::FindParticle(arr, pdg2, 2, 2760., "V0M0005", 0); | |
76 | pi[0] = AliParticleYield::Add(pi[0],AliParticleYield::FindParticle(arr, -pdg2, 2, 2760., "V0M0005", 0)); | |
77 | pi[1] = AliParticleYield::FindParticle(arr, pdg2, 2, 2760., "V0M0510", 0); | |
78 | pi[1] = AliParticleYield::Add(pi[1],AliParticleYield::FindParticle(arr, -pdg2, 2, 2760., "V0M0510", 0)); | |
79 | ||
80 | ||
81 | // Scale to get protons with errors corresponding to the ratio | |
82 | ratio[0]->Scale(pi[0]->GetYield()) ; | |
83 | ratio[1]->Scale(pi[1]->GetYield()) ; | |
84 | ||
85 | ratio[0]->Add(ratio[0], ratio[1]); | |
86 | pi[0]->Add(pi[0],pi[1]); | |
87 | pi[0]->SetNormError(0); | |
88 | pi[0]->SetStatError(0); | |
89 | pi[0]->SetSystError(0); | |
90 | ||
91 | ratio[0]->Scale(1./pi[0]->GetYield()); | |
92 | ratio[0]->SetCentr("V0M0010"); | |
93 | ||
94 | ratio[0]->Print(); | |
95 | // average->Dump(); | |
96 | average->Print(); | |
97 | ||
98 | ||
99 | } | |
100 | ||
101 | void ExtrapolateWithConstantRatioToPions(Int_t pdg, TString centrOrigin, TString centrDest) { | |
102 | ||
103 | AliParticleYield * part = AliParticleYield::FindParticle(arr, pdg, 2, 2760., centrOrigin); | |
104 | AliParticleYield * pionOrigin = AliParticleYield::FindParticle(arr, 211, 2, 2760., centrOrigin); | |
105 | AliParticleYield * pionDest = AliParticleYield::FindParticle(arr, 211, 2, 2760., centrDest); | |
106 | if(!part || !pionOrigin | !pionDest) { | |
107 | return; | |
108 | } | |
109 | // The pion yield is takes | |
110 | part->Scale (1./pionOrigin->GetYield()); | |
111 | part->Scale (pionDest->GetYield()); | |
112 | part->SetCentr(centrDest); | |
113 | part->SetMeasurementType(part->GetMeasurementType() | AliParticleYield::kTypeExtrPionRatio); | |
114 | part->Print(); | |
115 | // std::cout << "1" << std::endl; | |
116 | TClonesArray * arrOut = new TClonesArray("AliParticleYield"); | |
117 | // std::cout << "2" << std::endl; | |
118 | new((*arrOut)[0]) AliParticleYield(*part) ; | |
119 | ||
120 | // std::cout << "3" << std::endl; | |
121 | // std::cout << "4" << std::endl; | |
122 | AliParticleYield::SaveAsASCIIFile(arrOut, "temp.txt"); | |
123 | } |