1 /////////////////////////////////////////////////////////////////////////////
3 // AliFemtoPairCutAntiGamma - a pair cut which checks //
4 // for some pair qualities that attempt to identify slit/doubly //
5 // reconstructed tracks and also selects pairs based on their separation //
6 // at the entrance to the TPC //
8 /////////////////////////////////////////////////////////////////////////////
9 /***************************************************************************
11 * $Id: AliFemtoPairCutAntiGamma.cxx,v 1.1.2.1 2007/10/19 13:35:33 akisiel Exp $
13 * Author: Adam Kisiel, Ohio State, kisiel@mps.ohio-state.edu
14 ***************************************************************************
16 * Description: part of STAR HBT Framework: AliFemtoMaker package
17 * a cut to remove "shared" and "split" pairs
19 ***************************************************************************
22 **************************************************************************/
24 #include "AliFemtoPairCutAntiGamma.h"
30 ClassImp(AliFemtoPairCutAntiGamma)
34 AliFemtoPairCutAntiGamma::AliFemtoPairCutAntiGamma():
35 AliFemtoShareQualityPairCut(),
43 AliFemtoPairCutAntiGamma::AliFemtoPairCutAntiGamma(const AliFemtoPairCutAntiGamma& c) :
44 AliFemtoShareQualityPairCut(c),
50 fMaxEEMinv = c.fMaxEEMinv;
51 fMaxDTheta = c.fMaxDTheta;
52 fDTPCMin = c.fDTPCMin;
53 fDataType = c.fDataType;
56 AliFemtoPairCutAntiGamma& AliFemtoPairCutAntiGamma::operator=(const AliFemtoPairCutAntiGamma& c)
59 fMaxEEMinv = c.fMaxEEMinv;
60 fMaxDTheta = c.fMaxDTheta;
61 fDTPCMin = c.fDTPCMin;
62 fDataType = c.fDataType;
69 AliFemtoPairCutAntiGamma::~AliFemtoPairCutAntiGamma(){
73 bool AliFemtoPairCutAntiGamma::Pass(const AliFemtoPair* pair){
74 // Accept pairs based on their TPC entrance separation and
75 // quality and sharity
83 if ((pair->Track1()->Track()->Charge() * pair->Track2()->Track()->Charge()) < 0.0) {
84 double theta1 = pair->Track1()->Track()->P().Theta();
85 double theta2 = pair->Track2()->Track()->P().Theta();
86 double dtheta = TMath::Abs(theta1 - theta2);
88 double e1 = TMath::Sqrt(me*me + pair->Track1()->Track()->P().Mag2());
89 double e2 = TMath::Sqrt(me*me + pair->Track2()->Track()->P().Mag2());
91 double minv = 2*me*me + 2*(e1*e2 -
92 pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
93 pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
94 pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
96 if ((minv < fMaxEEMinv) && (dtheta < fMaxDTheta)) temp = false;
99 bool tempTPCEntrance = true;
101 if(fDataType==kESD || fDataType==kAOD)
103 double distx = pair->Track1()->Track()->NominalTpcEntrancePoint().x() - pair->Track2()->Track()->NominalTpcEntrancePoint().x();
104 double disty = pair->Track1()->Track()->NominalTpcEntrancePoint().y() - pair->Track2()->Track()->NominalTpcEntrancePoint().y();
105 double distz = pair->Track1()->Track()->NominalTpcEntrancePoint().z() - pair->Track2()->Track()->NominalTpcEntrancePoint().z();
106 double dist = sqrt(distx*distx + disty*disty + distz*distz);
108 tempTPCEntrance = dist > fDTPCMin;
112 if (temp && tempTPCEntrance) {
114 temp = AliFemtoShareQualityPairCut::Pass(pair);
115 if (temp) {fNPairsPassed++;}
116 else fNPairsFailed++;
127 AliFemtoString AliFemtoPairCutAntiGamma::Report(){
128 // Prepare a report from the execution
129 string stemp = "AliFemtoPairCutAntiGamma Pair Cut - remove pairs possibly coming from Gamma conversions\n";
132 snprintf(ctemp , 100, "Number of pairs which passed:\t%ld Number which failed:\t%ld\n",fNPairsPassed,fNPairsFailed);
134 AliFemtoString returnThis = stemp;
138 TList *AliFemtoPairCutAntiGamma::ListSettings()
140 // return a list of settings in a writable form
141 TList *tListSetttings = AliFemtoShareQualityPairCut::ListSettings();
143 snprintf(buf, 200, "AliFemtoPairCutAntiGamma.maxeeminv=%f", fMaxEEMinv);
144 snprintf(buf, 200, "AliFemtoPairCutAntiGamma.maxdtheta=%f", fMaxDTheta);
145 tListSetttings->AddLast(new TObjString(buf));
147 return tListSetttings;
150 void AliFemtoPairCutAntiGamma::SetMaxEEMinv(Double_t maxeeminv)
152 fMaxEEMinv = maxeeminv;
156 void AliFemtoPairCutAntiGamma::SetMaxThetaDiff(Double_t maxdtheta)
158 fMaxDTheta = maxdtheta;
161 void AliFemtoPairCutAntiGamma::SetTPCEntranceSepMinimum(double dtpc)
166 void AliFemtoPairCutAntiGamma::SetDataType(AliFemtoDataType type)