1 #include "AliRsnCutPhi.h"
5 AliRsnCutPhi::AliRsnCutPhi() :
6 AliRsnCut("cut", AliRsnTarget::kDaughter),
10 SetPhiRange(0.0, 360.0);
13 //_________________________________________________________________________________________________
14 AliRsnCutPhi::AliRsnCutPhi(const char *name, TString opt) :
15 AliRsnCut(name, AliRsnTarget::kDaughter),
19 SetPhiRange(0.0, 360.0);
22 //_________________________________________________________________________________________________
23 AliRsnCutPhi::AliRsnCutPhi(const AliRsnCutPhi ©) :
28 SetPhiRange(copy.fPhiRange[0], copy.fPhiRange[1]);
30 //_________________________________________________________________________________________________
31 AliRsnCutPhi &AliRsnCutPhi::operator=(const AliRsnCutPhi ©)
36 AliRsnCut::operator=(copy);
41 SetPhiRange(copy.fPhiRange[0], copy.fPhiRange[1]);
44 //_________________________________________________________________________________________________
45 Bool_t AliRsnCutPhi::IsSelected(TObject *object)
48 // Checks if the track passes the phi cut
50 Bool_t accept = kFALSE;
51 if (!TargetOK(object)) return accept;
53 AliVTrack *vtrack = fDaughter->Ref2Vtrack();
55 AliError("Referenced daughter is not a track");
59 if (fOption.Contains("InTRD")) return IsInsideTRD(vtrack);
60 if (fOption.Contains("OutTRD")) return IsOutsideTRD(vtrack);
62 Double_t value = 90.0;
63 if (fOption.Contains("OuterTPC")) value = GetTrackPhi(vtrack, 278.0);
64 if (fOption.Contains("InnerTOF")) value = GetTrackPhi(vtrack, 378.0);
66 if ( (value>=fPhiRange[0]) && (value<=fPhiRange[1]) )
74 //_________________________________________________________________________________________________
75 Bool_t AliRsnCutPhi::IsInsideTRD(AliVTrack *vtrack)
78 // Checks if track falls inside the TRD sectors
79 // implemented for 2010 configuration only
80 // edge effects removed by tightening the phi cut by 5 deg
82 Bool_t accept = kFALSE;
84 AliError("Referenced daughter is not a track");
87 Double_t value = GetTrackPhi(vtrack, 278.0);
88 if ( ((value>=0.0) && (value<=35.0)) ||
89 ((value>=135.0) && (value<=215.0)) ||
90 ((value>=345.0) && (value<=360.0)) )
96 //_________________________________________________________________________________________________
97 Bool_t AliRsnCutPhi::IsOutsideTRD(AliVTrack *vtrack)
100 // Checks if track falls inside the TRD sectors
101 // implemented for 2010 configuration only
102 // edge effects removed by tightening the phi cut by 5 deg
104 Bool_t accept = kFALSE;
106 AliError("Referenced daughter is not a track");
109 Double_t value = GetTrackPhi(vtrack, 278.0);
110 if ( ((value>=45.0) && (value<=125.0)) ||
111 ((value>=225.0) && (value<=335.0)) )
118 //----------------------------------------------------------------------------
119 Double_t AliRsnCutPhi::GetTrackPhi(AliVTrack * vtrack, Double_t radius = 0.0)
122 // Extract phi from vtrack object at radius r
123 // If r==0 (default), provides phi at vertex
125 Double_t pos[3]={0.,0.,0.};
126 Double_t phiOut = -999.0;
129 AliError("Invalid VTrack object");
133 phiOut=vtrack->Phi()*TMath::RadToDeg();
135 AliExternalTrackParam etp;
136 etp.CopyFromVTrack(vtrack);
137 if(etp.GetXYZAt(radius, 5., pos)){
138 phiOut=TMath::ATan2(pos[1],pos[0])*TMath::RadToDeg();
139 if (phiOut<0) phiOut+= (2*TMath::Pi()*TMath::RadToDeg());