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")) {
60 if (fOption.Contains("CheckTOF"))
61 return IsInsideTRD2TOF(vtrack);
63 return IsInsideTRD(vtrack);
65 if (fOption.Contains("OutTRD")) {
66 if (fOption.Contains("CheckTOF"))
67 return IsOutsideTRD2TOF(vtrack);
69 return IsOutsideTRD(vtrack);
72 Double_t value = 90.0;
73 if (fOption.Contains("OuterTPC")) value = GetTrackPhi(vtrack, 278.0);
74 if (fOption.Contains("InnerTOF")) value = GetTrackPhi(vtrack, 378.0);
75 if ( (value>=fPhiRange[0]) && (value<=fPhiRange[1]) )
83 //_________________________________________________________________________________________________
84 Bool_t AliRsnCutPhi::IsInsideTRD(AliVTrack *vtrack)
87 // Checks if track falls inside the TRD sectors
88 // implemented for 2010 configuration only
89 // edge effects removed by tightening the phi cut by 5 deg
91 Bool_t accept = kFALSE;
93 AliError("Referenced daughter is not a track");
96 Double_t value = GetTrackPhi(vtrack, 278.0);
97 if ( ((value>=0.0) && (value<=35.0)) ||
98 ((value>=135.0) && (value<=215.0)) ||
99 ((value>=345.0) && (value<=360.0)) )
105 //_________________________________________________________________________________________________
106 Bool_t AliRsnCutPhi::IsOutsideTRD(AliVTrack *vtrack)
109 // Checks if track falls inside the TRD sectors
110 // implemented for 2010 configuration only
111 // edge effects removed by tightening the phi cut by 5 deg
113 Bool_t accept = kFALSE;
115 AliError("Referenced daughter is not a track");
118 Double_t value = GetTrackPhi(vtrack, 278.0);
119 if ( ((value>=45.0) && (value<=125.0)) ||
120 ((value>=225.0) && (value<=335.0)) )
127 //_________________________________________________________________________________________________
128 Bool_t AliRsnCutPhi::IsInsideTRD2TOF(AliVTrack *vtrack)
131 // Checks if track falls inside the TRD sectors
132 // implemented for 2010 configuration only
133 // edge effects removed by tightening the phi cut by 5 deg
135 Bool_t accept = kFALSE;
137 AliError("Referenced daughter is not a track");
140 Double_t value2Tpc = GetTrackPhi(vtrack, 278.0);
141 Double_t value2Tof = GetTrackPhi(vtrack, 378.0);
142 if ( ((value2Tpc>=0.0) && (value2Tpc<=35.0) && (value2Tof>=0.0) && (value2Tof<=35.0) ) ||
143 ((value2Tpc>=135.0) && (value2Tpc<=215.0) && (value2Tof>=135.0) && (value2Tof<=215.0)) ||
144 ((value2Tpc>=345.0) && (value2Tpc<=360.0) && (value2Tof>=345.0) && (value2Tof<=360.0)) )
151 //----------------------------------------------------------------------------
152 Bool_t AliRsnCutPhi::IsOutsideTRD2TOF(AliVTrack *vtrack)
155 // Checks if track falls inside the TRD sectors
156 // implemented for 2010 configuration only
157 // edge effects removed by tightening the phi cut by 5 deg
159 Bool_t accept = kFALSE;
161 AliError("Referenced daughter is not a track");
164 Double_t value2Tpc = GetTrackPhi(vtrack, 278.0);
165 Double_t value2Tof = GetTrackPhi(vtrack, 378.0);
167 if ( ((value2Tpc>=45.0) && (value2Tpc<=1255.0) && (value2Tof>=45.0) && (value2Tof<=125.0) ) ||
168 ((value2Tpc>=225.0) && (value2Tpc<=335.0) && (value2Tof>=225.0) && (value2Tof<=335.0)) )
174 //----------------------------------------------------------------------------
175 Double_t AliRsnCutPhi::GetTrackPhi(AliVTrack * vtrack, Double_t radius = 0.0)
178 // Extract phi from vtrack object at radius r
179 // If r==0 (default), provides phi at vertex
181 Double_t pos[3]={0.,0.,0.};
182 Double_t phiOut = -999.0;
185 AliError("Invalid VTrack object");
189 phiOut=vtrack->Phi()*TMath::RadToDeg();
191 AliExternalTrackParam etp;
192 etp.CopyFromVTrack(vtrack);
193 if(etp.GetXYZAt(radius, 5., pos)){
194 phiOut=TMath::ATan2(pos[1],pos[0])*TMath::RadToDeg();
195 if (phiOut<0) phiOut+= (2*TMath::Pi()*TMath::RadToDeg());