]>
Commit | Line | Data |
---|---|---|
81ab71d3 | 1 | ///////////////////////////////////////////////////////////////////////////////// |
2 | // // | |
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 // | |
7 | // // | |
8 | ///////////////////////////////////////////////////////////////////////////////// | |
9 | /******************************************************************************** | |
6b54408d | 10 | * |
81ab71d3 | 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 | |
6b54408d | 14 | * |
81ab71d3 | 15 | ********************************************************************************/ |
6b54408d | 16 | |
17 | #include "AliFemtoPairCutRadialDistance.h" | |
18 | #include <string> | |
19 | #include <cstdio> | |
20 | ||
21 | #ifdef __ROOT__ | |
22 | ClassImp(AliFemtoPairCutRadialDistance) | |
23 | #endif | |
24 | ||
25 | //__________________ | |
26 | AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance(): | |
2daa4142 | 27 | AliFemtoPairCutAntiGamma(), |
81ab71d3 | 28 | fDPhiStarMin(0), |
29 | fEtaMin(0), | |
30 | fMinRad(0.8), | |
31 | fMagSign(1) | |
6b54408d | 32 | { |
33 | } | |
34 | //__________________ | |
35 | AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance(const AliFemtoPairCutRadialDistance& c) : | |
2daa4142 | 36 | AliFemtoPairCutAntiGamma(c), |
81ab71d3 | 37 | fDPhiStarMin(0), |
38 | fEtaMin(0), | |
39 | fMinRad(0.8), | |
40 | fMagSign(1) | |
6b54408d | 41 | { |
81ab71d3 | 42 | fDPhiStarMin = c.fDPhiStarMin; |
6b54408d | 43 | fEtaMin = c.fEtaMin; |
81ab71d3 | 44 | fMinRad = c.fMinRad; |
45 | fMagSign = c.fMagSign; | |
6b54408d | 46 | } |
47 | ||
48 | //__________________ | |
49 | AliFemtoPairCutRadialDistance::~AliFemtoPairCutRadialDistance(){ | |
50 | /* no-op */ | |
51 | } | |
c4d26920 | 52 | AliFemtoPairCutRadialDistance& AliFemtoPairCutRadialDistance::operator=(const AliFemtoPairCutRadialDistance& c) |
53 | { | |
54 | if (this != &c) { | |
55 | fDPhiStarMin = c.fDPhiStarMin; | |
56 | fEtaMin = c.fEtaMin; | |
57 | fMinRad = c.fMinRad; | |
58 | fMagSign = c.fMagSign; | |
59 | } | |
60 | ||
61 | return *this; | |
62 | } | |
6b54408d | 63 | //__________________ |
64 | bool AliFemtoPairCutRadialDistance::Pass(const AliFemtoPair* pair){ | |
65 | // Accept pairs based on their TPC entrance separation and | |
66 | // quality and sharity | |
2e4e6603 | 67 | // bool temp = true; |
6b54408d | 68 | |
cd638403 | 69 | // double pih = 3.14159265358979312; |
70 | // double pit = 6.28318530717958623; | |
2daa4142 | 71 | |
2daa4142 | 72 | |
6b54408d | 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(); | |
81 | ||
81ab71d3 | 82 | |
83 | Double_t rad; | |
84 | Bool_t pass5 = kTRUE; | |
85 | ||
86 | rad = fMinRad; | |
cd638403 | 87 | for (Double_t iter=fMinRad*10; iter<251; iter+=1.0) { |
81ab71d3 | 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; | |
92 | pass5 = kFALSE; | |
93 | break; | |
94 | } | |
95 | rad+=0.01; | |
96 | } | |
2daa4142 | 97 | |
2daa4142 | 98 | |
2e4e6603 | 99 | if (pass5) { |
100 | pass5 = AliFemtoPairCutAntiGamma::Pass(pair); | |
6b54408d | 101 | } |
102 | else | |
103 | fNPairsFailed++; | |
104 | ||
2e4e6603 | 105 | return pass5; |
6b54408d | 106 | } |
107 | //__________________ | |
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]; | |
81ab71d3 | 111 | snprintf(ctemp , 100, "Accept pair with separation more that %f",fDPhiStarMin); |
6b54408d | 112 | stemp += ctemp; |
113 | snprintf(ctemp , 100, "Number of pairs which passed:\t%ld Number which failed:\t%ld\n",fNPairsPassed,fNPairsFailed); | |
114 | stemp += ctemp; | |
115 | AliFemtoString returnThis = stemp; | |
116 | return returnThis;} | |
117 | //__________________ | |
118 | ||
119 | TList *AliFemtoPairCutRadialDistance::ListSettings() | |
120 | { | |
121 | // return a list of settings in a writable form | |
2daa4142 | 122 | TList *tListSetttings = AliFemtoPairCutAntiGamma::ListSettings(); |
6b54408d | 123 | char buf[200]; |
81ab71d3 | 124 | snprintf(buf, 200, "AliFemtoPairCutRadialDistance.phistarsepmin=%f", fDPhiStarMin); |
6b54408d | 125 | tListSetttings->AddLast(new TObjString(buf)); |
126 | ||
127 | return tListSetttings; | |
128 | } | |
129 | ||
81ab71d3 | 130 | void AliFemtoPairCutRadialDistance::SetPhiStarDifferenceMinimum(double dtpc) |
6b54408d | 131 | { |
81ab71d3 | 132 | fDPhiStarMin = dtpc; |
6b54408d | 133 | } |
134 | ||
135 | void AliFemtoPairCutRadialDistance::SetEtaDifferenceMinimum(double etpc) | |
136 | { | |
137 | fEtaMin = etpc; | |
138 | } | |
81ab71d3 | 139 | |
140 | ||
141 | void AliFemtoPairCutRadialDistance::SetMinimumRadius(double minrad) | |
142 | { | |
143 | fMinRad = minrad; | |
144 | } | |
145 | ||
146 | void AliFemtoPairCutRadialDistance::SetMagneticFieldSign(int magsign) | |
147 | { | |
148 | if(magsign>1) fMagSign = 1; | |
149 | else if(magsign<1) fMagSign = -1; | |
150 | else fMagSign = magsign; | |
151 | } |