1 /////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoPairCutRadialDistance - 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 * Author: Johanna Gramling, University of Heidelberg, jgramlin@cern.ch
12 * Malgorzata Janik, Warsaw University of Technology, majanik@cern.ch
13 * Lukasz Graczykowski, Warsaw University of Technology, lgraczyk@cern.ch
15 ********************************************************************************/
17 #include "AliFemtoPairCutRadialDistance.h"
22 ClassImp(AliFemtoPairCutRadialDistance)
26 AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance():
27 AliFemtoPairCutAntiGamma(),
35 AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance(const AliFemtoPairCutRadialDistance& c) :
36 AliFemtoPairCutAntiGamma(c),
42 fDPhiStarMin = c.fDPhiStarMin;
45 fMagSign = c.fMagSign;
49 AliFemtoPairCutRadialDistance::~AliFemtoPairCutRadialDistance(){
52 AliFemtoPairCutRadialDistance& AliFemtoPairCutRadialDistance::operator=(const AliFemtoPairCutRadialDistance& c)
55 fDPhiStarMin = c.fDPhiStarMin;
58 fMagSign = c.fMagSign;
64 bool AliFemtoPairCutRadialDistance::Pass(const AliFemtoPair* pair){
65 // Accept pairs based on their TPC entrance separation and
66 // quality and sharity
69 // double pih = 3.14159265358979312;
70 // double pit = 6.28318530717958623;
73 double phi1 = pair->Track1()->Track()->P().Phi();
74 double phi2 = pair->Track2()->Track()->P().Phi();
75 double chg1 = pair->Track1()->Track()->Charge();
76 double chg2 = pair->Track2()->Track()->Charge();
77 double ptv1 = pair->Track1()->Track()->Pt();
78 double ptv2 = pair->Track2()->Track()->Pt();
79 double eta1 = pair->Track1()->Track()->P().PseudoRapidity();
80 double eta2 = pair->Track2()->Track()->P().PseudoRapidity();
87 for (Double_t iter=fMinRad*10; iter<251; iter+=1.0) {
88 Double_t dps = (phi1-phi2+(TMath::ASin(-0.075*chg1*fMagSign*rad/ptv1))-(TMath::ASin(-0.075*chg2*fMagSign*rad/ptv2)));
89 double etad = eta2 - eta1;
90 if (fabs(etad)<fEtaMin && fabs(dps)<fDPhiStarMin) {
91 // cout << "5% cut is not passed - returning" << endl;
100 pass5 = AliFemtoPairCutAntiGamma::Pass(pair);
108 AliFemtoString AliFemtoPairCutRadialDistance::Report(){
109 // Prepare a report from the execution
110 string stemp = "AliFemtoRadialDistance Pair Cut - remove shared and split pairs and pairs with small separation at the specified radius\n"; char ctemp[100];
111 snprintf(ctemp , 100, "Accept pair with separation more that %f",fDPhiStarMin);
113 snprintf(ctemp , 100, "Number of pairs which passed:\t%ld Number which failed:\t%ld\n",fNPairsPassed,fNPairsFailed);
115 AliFemtoString returnThis = stemp;
119 TList *AliFemtoPairCutRadialDistance::ListSettings()
121 // return a list of settings in a writable form
122 TList *tListSetttings = AliFemtoPairCutAntiGamma::ListSettings();
124 snprintf(buf, 200, "AliFemtoPairCutRadialDistance.phistarsepmin=%f", fDPhiStarMin);
125 tListSetttings->AddLast(new TObjString(buf));
127 return tListSetttings;
130 void AliFemtoPairCutRadialDistance::SetPhiStarDifferenceMinimum(double dtpc)
135 void AliFemtoPairCutRadialDistance::SetEtaDifferenceMinimum(double etpc)
141 void AliFemtoPairCutRadialDistance::SetMinimumRadius(double minrad)
146 void AliFemtoPairCutRadialDistance::SetMagneticFieldSign(int magsign)
148 if(magsign>1) fMagSign = 1;
149 else if(magsign<1) fMagSign = -1;
150 else fMagSign = magsign;