]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistance.cxx
Fix Coverity
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemtoUser / AliFemtoPairCutRadialDistance.cxx
CommitLineData
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__
22ClassImp(AliFemtoPairCutRadialDistance)
23#endif
24
25//__________________
26AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance():
2daa4142 27 AliFemtoPairCutAntiGamma(),
81ab71d3 28 fDPhiStarMin(0),
29 fEtaMin(0),
30 fMinRad(0.8),
31 fMagSign(1)
6b54408d 32{
33}
34//__________________
35AliFemtoPairCutRadialDistance::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//__________________
49AliFemtoPairCutRadialDistance::~AliFemtoPairCutRadialDistance(){
50 /* no-op */
51}
c4d26920 52AliFemtoPairCutRadialDistance& 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//__________________
64bool 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//__________________
108AliFemtoString 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
119TList *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 130void AliFemtoPairCutRadialDistance::SetPhiStarDifferenceMinimum(double dtpc)
6b54408d 131{
81ab71d3 132 fDPhiStarMin = dtpc;
6b54408d 133}
134
135void AliFemtoPairCutRadialDistance::SetEtaDifferenceMinimum(double etpc)
136{
137 fEtaMin = etpc;
138}
81ab71d3 139
140
141void AliFemtoPairCutRadialDistance::SetMinimumRadius(double minrad)
142{
143 fMinRad = minrad;
144}
145
146void AliFemtoPairCutRadialDistance::SetMagneticFieldSign(int magsign)
147{
148 if(magsign>1) fMagSign = 1;
149 else if(magsign<1) fMagSign = -1;
150 else fMagSign = magsign;
151}