]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/ThermalFits/InterpolateRatiosAndYields.C
Added macros for ratios and yields
[u/mrichter/AliRoot.git] / PWGLF / ThermalFits / InterpolateRatiosAndYields.C
CommitLineData
9d84731e 1#if !defined (__CINT__) || (defined(__MAKECINT__))
2#include <iostream>
3#include "TClonesArray.h"
4#include "AliParticleYield.h"
5
6#endif
7TClonesArray * arr =0;
8
9void InterpolateRatios(Int_t pdg1, Int_t pdg2) ;
10void Interpolate0010(Int_t pdg) ;
11void ExtrapolateWithConstantRatioToPions(Int_t pdg, TString centrOrigin, TString centrDest);
12
13
14void 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
44void 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
55void 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
67void 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
101void 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}