67427ff7 |
1 | /*************************************************************************** |
2 | * |
3 | * $Id$ |
4 | * |
5 | * Author: Mike Lisa, Ohio State, lisa@mps.ohio-state.edu |
6 | *************************************************************************** |
7 | * |
8 | * Description: part of STAR HBT Framework: AliFemtoMaker package |
9 | * a simple Q-invariant correlation function |
10 | * |
11 | *************************************************************************** |
12 | * |
13 | * $Log$ |
0215f606 |
14 | * Revision 1.1.1.1 2007/04/25 15:38:41 panos |
15 | * Importing the HBT code dir |
16 | * |
67427ff7 |
17 | * Revision 1.1.1.1 2007/03/07 10:14:49 mchojnacki |
18 | * First version on CVS |
19 | * |
20 | * Revision 1.4 2000/01/25 17:34:45 laue |
21 | * I. In order to run the stand alone version of the AliFemtoMaker the following |
22 | * changes have been done: |
23 | * a) all ClassDefs and ClassImps have been put into #ifdef __ROOT__ statements |
24 | * b) unnecessary includes of StMaker.h have been removed |
25 | * c) the subdirectory AliFemtoMaker/doc/Make has been created including everything |
26 | * needed for the stand alone version |
27 | * |
28 | * II. To reduce the amount of compiler warning |
29 | * a) some variables have been type casted |
30 | * b) some destructors have been declared as virtual |
31 | * |
32 | * Revision 1.3 1999/07/29 02:47:09 lisa |
33 | * 1) add OpeningAngle correlation function 2) add AliFemtoMcEventReader 3) make histos in CorrFctns do errors correctly |
34 | * |
35 | * Revision 1.2 1999/07/06 22:33:20 lisa |
36 | * Adjusted all to work in pro and new - dev itself is broken |
37 | * |
38 | * Revision 1.1.1.1 1999/06/29 16:02:57 lisa |
39 | * Installation of AliFemtoMaker |
40 | * |
41 | **************************************************************************/ |
42 | |
43 | #include "CorrFctn/AliFemtoQinvCorrFctn.h" |
44 | //#include "Infrastructure/AliFemtoHisto.h" |
45 | #include <cstdio> |
46 | |
47 | #ifdef __ROOT__ |
48 | ClassImp(AliFemtoQinvCorrFctn) |
49 | #endif |
50 | |
51 | //____________________________ |
0215f606 |
52 | AliFemtoQinvCorrFctn::AliFemtoQinvCorrFctn(char* title, const int& nbins, const float& QinvLo, const float& QinvHi): |
53 | fNumerator(0), |
54 | fDenominator(0), |
55 | fRatio(0) |
56 | { |
67427ff7 |
57 | // set up numerator |
58 | // title = "Num Qinv (MeV/c)"; |
59 | char TitNum[100] = "Num"; |
60 | strcat(TitNum,title); |
61 | fNumerator = new TH1D(TitNum,title,nbins,QinvLo,QinvHi); |
62 | // set up denominator |
63 | //title = "Den Qinv (MeV/c)"; |
64 | char TitDen[100] = "Den"; |
65 | strcat(TitDen,title); |
66 | fDenominator = new TH1D(TitDen,title,nbins,QinvLo,QinvHi); |
67 | // set up ratio |
68 | //title = "Ratio Qinv (MeV/c)"; |
69 | char TitRat[100] = "Rat"; |
70 | strcat(TitRat,title); |
71 | fRatio = new TH1D(TitRat,title,nbins,QinvLo,QinvHi); |
72 | // this next bit is unfortunately needed so that we can have many histos of same "title" |
73 | // it is neccessary if we typedef TH1D to TH1d (which we do) |
74 | //fNumerator->SetDirectory(0); |
75 | //fDenominator->SetDirectory(0); |
76 | //fRatio->SetDirectory(0); |
77 | |
78 | // to enable error bar calculation... |
79 | fNumerator->Sumw2(); |
80 | fDenominator->Sumw2(); |
81 | fRatio->Sumw2(); |
82 | |
83 | } |
84 | |
0215f606 |
85 | //____________________________ |
86 | AliFemtoQinvCorrFctn::AliFemtoQinvCorrFctn(const AliFemtoQinvCorrFctn& aCorrFctn) : |
87 | fNumerator(0), |
88 | fDenominator(0), |
89 | fRatio(0) |
90 | { |
91 | fNumerator = new TH1D(*aCorrFctn.fNumerator); |
92 | fDenominator = new TH1D(*aCorrFctn.fDenominator); |
93 | fRatio = new TH1D(*aCorrFctn.fRatio); |
94 | } |
67427ff7 |
95 | //____________________________ |
96 | AliFemtoQinvCorrFctn::~AliFemtoQinvCorrFctn(){ |
97 | delete fNumerator; |
98 | delete fDenominator; |
99 | delete fRatio; |
100 | } |
0215f606 |
101 | //_________________________ |
102 | AliFemtoQinvCorrFctn& AliFemtoQinvCorrFctn::operator=(const AliFemtoQinvCorrFctn& aCorrFctn) |
103 | { |
104 | if (this == &aCorrFctn) |
105 | return *this; |
106 | |
107 | if (fNumerator) delete fNumerator; |
108 | fNumerator = new TH1D(*aCorrFctn.fNumerator); |
109 | if (fDenominator) delete fDenominator; |
110 | fDenominator = new TH1D(*aCorrFctn.fDenominator); |
111 | if (fRatio) delete fRatio; |
112 | fRatio = new TH1D(*aCorrFctn.fRatio); |
113 | |
114 | return *this; |
115 | } |
116 | |
67427ff7 |
117 | //_________________________ |
118 | void AliFemtoQinvCorrFctn::Finish(){ |
119 | // here is where we should normalize, fit, etc... |
120 | // we should NOT Draw() the histos (as I had done it below), |
121 | // since we want to insulate ourselves from root at this level |
122 | // of the code. Do it instead at root command line with browser. |
123 | // fNumerator->Draw(); |
124 | //fDenominator->Draw(); |
125 | //fRatio->Draw(); |
126 | fRatio->Divide(fNumerator,fDenominator,1.0,1.0); |
127 | |
128 | } |
129 | |
130 | //____________________________ |
131 | AliFemtoString AliFemtoQinvCorrFctn::Report(){ |
132 | string stemp = "Qinv Correlation Function Report:\n"; |
133 | char ctemp[100]; |
134 | sprintf(ctemp,"Number of entries in numerator:\t%E\n",fNumerator->GetEntries()); |
135 | stemp += ctemp; |
136 | sprintf(ctemp,"Number of entries in denominator:\t%E\n",fDenominator->GetEntries()); |
137 | stemp += ctemp; |
138 | sprintf(ctemp,"Number of entries in ratio:\t%E\n",fRatio->GetEntries()); |
139 | stemp += ctemp; |
140 | // stemp += mCoulombWeight->Report(); |
141 | AliFemtoString returnThis = stemp; |
142 | return returnThis; |
143 | } |
144 | //____________________________ |
145 | void AliFemtoQinvCorrFctn::AddRealPair(const AliFemtoPair* pair){ |
146 | double Qinv = fabs(pair->qInv()); // note - qInv() will be negative for identical pairs... |
147 | fNumerator->Fill(Qinv); |
148 | // cout << "AliFemtoQinvCorrFctn::AddRealPair : " << pair->qInv() << " " << Qinv << |
149 | //" " << pair->track1().FourMomentum() << " " << pair->track2().FourMomentum() << endl; |
150 | } |
151 | //____________________________ |
152 | void AliFemtoQinvCorrFctn::AddMixedPair(const AliFemtoPair* pair){ |
153 | double weight = 1.0; |
154 | double Qinv = fabs(pair->qInv()); // note - qInv() will be negative for identical pairs... |
155 | fDenominator->Fill(Qinv,weight); |
156 | } |
157 | |
158 | |