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(),
37 AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance(const AliFemtoPairCutRadialDistance& c) :
38 AliFemtoPairCutAntiGamma(c),
46 fDPhiStarMin = c.fDPhiStarMin;
50 fMagSign = c.fMagSign;
51 fPhistarmin = c.fPhistarmin;
55 AliFemtoPairCutRadialDistance::~AliFemtoPairCutRadialDistance(){
58 AliFemtoPairCutRadialDistance& AliFemtoPairCutRadialDistance::operator=(const AliFemtoPairCutRadialDistance& c)
61 fDPhiStarMin = c.fDPhiStarMin;
65 fMagSign = c.fMagSign;
66 fPhistarmin = c.fPhistarmin;
73 bool AliFemtoPairCutRadialDistance::Pass(const AliFemtoPair* pair){
74 // Accept pairs based on their TPC entrance separation and
75 // quality and sharity
78 // double pih = 3.14159265358979312;
79 // double pit = 6.28318530717958623;
81 double phi1 = pair->Track1()->Track()->P().Phi();
82 double phi2 = pair->Track2()->Track()->P().Phi();
83 double chg1 = pair->Track1()->Track()->Charge();
84 double chg2 = pair->Track2()->Track()->Charge();
85 double ptv1 = pair->Track1()->Track()->Pt();
86 double ptv2 = pair->Track2()->Track()->Pt();
87 double eta1 = pair->Track1()->Track()->P().PseudoRapidity();
88 double eta2 = pair->Track2()->Track()->P().PseudoRapidity();
91 AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
92 Double_t magsign = 0.0;
95 // AliWarning("Could not get AODInputHandler");
100 fAOD = aodH->GetEvent();
102 magsign = fAOD->GetMagneticField();
107 else if ( magsign < 1)
112 //cout << "mag sign = " << magsign << endl;
115 Bool_t pass5 = kTRUE;
120 for (rad = fMinRad; rad < fMaxRad; rad += 0.01) {
121 Double_t dps = (phi2-phi1+(TMath::ASin(-0.075*chg2*fMagSign*rad/ptv2))-(TMath::ASin(-0.075*chg1*fMagSign*rad/ptv1)));
122 dps = TVector2::Phi_mpi_pi(dps);
123 Double_t etad = eta2 - eta1;
124 if (fabs(etad)<fEtaMin && fabs(dps)<fDPhiStarMin) {
125 // cout << "5% cut is not passed - returning" << endl;
133 double afsi0b = 0.07510020733*chg1*fMagSign*rad/ptv1;
134 double afsi1b = 0.07510020733*chg2*fMagSign*rad/ptv2;
136 if (fabs(afsi0b) >=1.) return kTRUE;
137 if (fabs(afsi1b) >=1.) return kTRUE;
139 Double_t dps = phi2 - phi1 + TMath::ASin(afsi1b) - TMath::ASin(afsi0b);
140 dps = TVector2::Phi_mpi_pi(dps);
142 Double_t etad = eta2 - eta1;
143 if (fabs(etad)<fEtaMin && fabs(dps)<fDPhiStarMin) {
150 pass5 = AliFemtoPairCutAntiGamma::Pass(pair);
159 AliFemtoString AliFemtoPairCutRadialDistance::Report(){
160 // Prepare a report from the execution
161 string stemp = "AliFemtoRadialDistance Pair Cut - remove shared and split pairs and pairs with small separation at the specified radius\n"; char ctemp[100];
162 snprintf(ctemp , 100, "Accept pair with separation more that %f",fDPhiStarMin);
164 snprintf(ctemp , 100, "Number of pairs which passed:\t%ld Number which failed:\t%ld\n",fNPairsPassed,fNPairsFailed);
166 AliFemtoString returnThis = stemp;
170 TList *AliFemtoPairCutRadialDistance::ListSettings()
172 // return a list of settings in a writable form
173 TList *tListSetttings = AliFemtoPairCutAntiGamma::ListSettings();
175 snprintf(buf, 200, "AliFemtoPairCutRadialDistance.phistarsepmin=%f", fDPhiStarMin);
176 tListSetttings->AddLast(new TObjString(buf));
178 return tListSetttings;
181 void AliFemtoPairCutRadialDistance::SetPhiStarDifferenceMinimum(double dtpc)
186 void AliFemtoPairCutRadialDistance::SetEtaDifferenceMinimum(double etpc)
192 void AliFemtoPairCutRadialDistance::SetMinimumRadius(double minrad)
197 void AliFemtoPairCutRadialDistance::SetMaximumRadius(double maxrad)
202 void AliFemtoPairCutRadialDistance::SetMagneticFieldSign(int magsign)
204 if(magsign>1) fMagSign = 1;
205 else if(magsign<1) fMagSign = -1;
206 else fMagSign = magsign;
209 void AliFemtoPairCutRadialDistance::SetPhiStarMin(Bool_t phistarmin)
211 fPhistarmin = phistarmin;