]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FEMTOSCOPY/AliFemto/AliFemtoKTPairCut.cxx
Add ReactionPlane dependent analysis classes
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoKTPairCut.cxx
1 /////////////////////////////////////////////////////////////////////////////
2 //                                                                         //
3 // AliFemtoKTPairCut - a pair cut which selects pairs based on their       //
4 // transverse momentum kT                                                  //
5 //                                                                         //
6 /////////////////////////////////////////////////////////////////////////////
7 /***************************************************************************
8  *
9  * $Id: AliFemtoKTPairCut.cxx,v 1.1.2.2 2007/11/09 11:20:35 akisiel Exp $
10  *
11  * Author: Adam Kisiel, Ohio State, kisiel@mps.ohio-state.edu
12  ***************************************************************************
13  *
14  * Description: part of STAR HBT Framework: AliFemtoMaker package
15  *   a cut to remove "shared" and "split" pairs
16  *
17  ***************************************************************************
18  *
19  *
20  **************************************************************************/
21 #include "AliFemtoKTPairCut.h"
22 #include <string>
23 #include <cstdio>
24 #include <TMath.h>
25
26 #ifdef __ROOT__
27 ClassImp(AliFemtoKTPairCut)
28 #endif
29
30 //__________________
31 AliFemtoKTPairCut::AliFemtoKTPairCut():
32   AliFemtoPairCut(),
33   fKTMin(0),
34   fKTMax(1.0e6),
35   fPhiMin(0),
36   fPhiMax(360.0)
37 {
38   fKTMin = 0;
39    fKTMax = 1.0e6;
40 }
41 //__________________
42 AliFemtoKTPairCut::AliFemtoKTPairCut(double lo, double hi) :
43   AliFemtoPairCut(),
44   fKTMin(lo),
45   fKTMax(hi),
46   fPhiMin(0),
47   fPhiMax(360)
48 {
49 }
50 //__________________
51 AliFemtoKTPairCut::AliFemtoKTPairCut(const AliFemtoKTPairCut& c) : 
52   AliFemtoPairCut(c),
53   fKTMin(0),
54   fKTMax(1.0e6),
55   fPhiMin(0),
56   fPhiMax(360)
57
58   fKTMin = c.fKTMin;
59   fKTMax = c.fKTMax;
60   fPhiMin = c.fPhiMin;
61   fPhiMax = c.fPhiMax;
62 }
63
64 //__________________
65 AliFemtoKTPairCut::~AliFemtoKTPairCut(){
66   /* no-op */
67 }
68 //__________________
69 /*bool AliFemtoKTPairCut::Pass(const AliFemtoPair* pair){
70   bool temp = true;
71   
72   if (pair->KT() < fKTMin)
73     temp = false;
74
75   if (pair->KT() > fKTMax)
76     temp = false;
77
78   return temp;
79 }*/
80 //__________________
81 AliFemtoString AliFemtoKTPairCut::Report(){
82   // Prepare a report from the execution
83   string stemp = "AliFemtoKT Pair Cut \n";  char ctemp[100];
84   sprintf(ctemp,"Accept pair with kT in range %f , %f",fKTMin,fKTMax);
85   sprintf(ctemp,"Accept pair with angle in range %f , %f",fPhiMin,fPhiMax);
86   stemp += ctemp;
87   AliFemtoString returnThis = stemp;
88   return returnThis;}
89 //__________________
90
91 TList *AliFemtoKTPairCut::ListSettings()
92 {
93   // return a list of settings in a writable form
94   TList *tListSetttings =  new TList();
95   char buf[200];
96   snprintf(buf, 200, "AliFemtoKTPairCut.ktmax=%f", fKTMax);
97   tListSetttings->AddLast(new TObjString(buf));
98   snprintf(buf, 200, "AliFemtoKTPairCut.ktmin=%f", fKTMin);
99   tListSetttings->AddLast(new TObjString(buf));
100   snprintf(buf, 200, "AliFemtoKTPairCut.phimax=%f", fPhiMax);
101   tListSetttings->AddLast(new TObjString(buf));
102   snprintf(buf, 200, "AliFemtoKTPairCut.phimin=%f", fPhiMin);
103   tListSetttings->AddLast(new TObjString(buf));
104
105   return tListSetttings;
106 }
107
108 void AliFemtoKTPairCut::SetKTRange(double ktmin, double ktmax)
109 {
110   fKTMin = ktmin;
111   fKTMax = ktmax;
112 }
113
114 void AliFemtoKTPairCut::SetPhiRange(double phimin, double phimax)
115 {
116   fPhiMin = phimin;
117   fPhiMax = phimax;
118 }
119
120 //______________________________________________________
121 bool AliFemtoKTPairCut::Pass(const AliFemtoPair* pair)
122 {
123   bool temp = true;
124
125 //Taking care of the Kt cut
126   if (pair->KT() < fKTMin)
127     temp = false;
128
129   if (pair->KT() > fKTMax)
130     temp = false;
131
132 //Taking care of the Phi cut
133   double rpangle = (pair->GetPairAngleEP())*180/TMath::Pi();
134
135   if (rpangle > 180.0) rpangle -= 180.0;
136   if (rpangle < 0.0) rpangle += 180.0;
137
138   if (fPhiMin < 0) {
139     if ((rpangle > fPhiMax) && (rpangle < 180.0+fPhiMin)) 
140       temp = false;
141   }
142   else {
143     if ((rpangle < fPhiMin) || (rpangle > fPhiMax))
144       temp = false;
145   }
146   return temp;
147 }
148
149 //_____________________________________
150 bool AliFemtoKTPairCut::Pass(const AliFemtoPair* pair, double aRPAngle)
151 {
152 //The same as above, but it is defined with RP Angle as input in all the Correlatin function classes.
153
154   bool temp = (aRPAngle > 0.);
155   aRPAngle = true;
156    
157   if (!Pass(pair))
158         temp = false;
159
160   return temp;
161 }