#include "AliPIDResponse.h"
#include "AliESDpid.h"
#include "AliAODpidUtil.h"
#include "AliRsnCutPIDNSigma.h"
ClassImp(AliRsnCutPIDNSigma)
AliRsnCutPIDNSigma::AliRsnCutPIDNSigma() :
AliRsnCut("cut", AliRsnTarget::kDaughter),
fSpecies(AliPID::kUnknown),
fDetector(kDetectors),
fRejectUnmatched(kTRUE),
fTrackNSigma(0.0),
fTrackMom(0.0),
fMyPID(0x0),
fRanges("AliRsnPIDRange", 0)
{
}
AliRsnCutPIDNSigma::AliRsnCutPIDNSigma
(const char *name, AliPID::EParticleType species, EDetector det) :
AliRsnCut(name, AliRsnTarget::kDaughter),
fSpecies(species),
fDetector(det),
fRejectUnmatched(kTRUE),
fTrackNSigma(0.0),
fTrackMom(0.0),
fMyPID(0x0),
fRanges("AliRsnPIDRange", 0)
{
}
AliRsnCutPIDNSigma::AliRsnCutPIDNSigma
(const AliRsnCutPIDNSigma ©) :
AliRsnCut(copy),
fSpecies(copy.fSpecies),
fDetector(copy.fDetector),
fRejectUnmatched(copy.fRejectUnmatched),
fTrackNSigma(0.0),
fTrackMom(0.0),
fMyPID(copy.fMyPID),
fRanges(copy.fRanges)
{
}
AliRsnCutPIDNSigma &AliRsnCutPIDNSigma::operator=(const AliRsnCutPIDNSigma ©)
{
AliRsnCut::operator=(copy);
if (this == ©)
return *this;
fSpecies = copy.fSpecies;
fDetector = copy.fDetector;
fRejectUnmatched = copy.fRejectUnmatched;
fMyPID = copy.fMyPID;
fRanges = copy.fRanges;
return (*this);
}
void AliRsnCutPIDNSigma::InitMyPID(Bool_t isMC, Bool_t isESD)
{
if (isESD)
fMyPID = new AliESDpid(isMC);
else
fMyPID = new AliAODpidUtil(isMC);
}
Bool_t AliRsnCutPIDNSigma::IsSelected(TObject *object)
{
if (!TargetOK(object)) return kFALSE;
AliPIDResponse *pid = 0x0;
if (fMyPID)
pid = fMyPID;
else
pid = fEvent->GetPIDResponse();
if (!pid) {
AliFatal("NULL PID response");
return kFALSE;
}
AliVTrack *vtrack = fDaughter->Ref2Vtrack();
if (!vtrack) {
AliDebugClass(2, "Referenced daughter is not a track");
return kFALSE;
}
if (!MatchDetector(vtrack)) {
AliDebugClass(2, Form("Detector not matched. fRejectUnmatched = %s --> track is %s", (fRejectUnmatched ? "true" : "false"), (fRejectUnmatched ? "rejected" : "accepted")));
return (!fRejectUnmatched);
}
fTrackMom = (fDetector == kTPC) ? vtrack->GetTPCmomentum() : vtrack->P();
switch (fDetector) {
case kITS:
fTrackNSigma = TMath::Abs(pid->NumberOfSigmasITS(vtrack, fSpecies));
break;
case kTPC:
fTrackNSigma = TMath::Abs(pid->NumberOfSigmasTPC(vtrack, fSpecies));
break;
case kTOF:
fTrackNSigma = TMath::Abs(pid->NumberOfSigmasTOF(vtrack, fSpecies));
break;
default:
AliError("Bad detector chosen. Rejecting track");
return kFALSE;
}
Bool_t accept = kFALSE;
Int_t i, goodRange = -1, nRanges = fRanges.GetEntriesFast();
for (i = 0; i < nRanges; i++) {
AliRsnPIDRange *range = (AliRsnPIDRange *)fRanges[i];
if (!range) continue;
if (!range->IsInRange(fTrackMom)) continue;
else {
goodRange = i;
accept = range->CutPass(fTrackNSigma);
AliDebugClass(2, Form("[%s] NSigma = %.3f, max = %.3f, track %s", GetName(), fTrackNSigma, range->NSigmaCut(), (accept ? "accepted" : "rejected")));
break;
}
}
if (goodRange < 0) {
AliDebugClass(2, Form("[%s] No good range found. Rejecting track", GetName()));
return kFALSE;
} else {
AliDebugClass(2, Form("[%s] Mom = %.3f, good range found (#%d), track was %s", GetName(), fTrackMom, goodRange, (accept ? "accepted" : "rejected")));
return accept;
}
}
void AliRsnCutPIDNSigma::Print(const Option_t *) const
{
Char_t mom[200], det[100], match[200];
if (fRejectUnmatched)
snprintf(match, 200, "Unmatched tracks are rejected");
else
snprintf(match, 200, "No check on track matching");
switch (fDetector) {
case kITS: snprintf(det, 3, "ITS"); break;
case kTPC: snprintf(det, 3, "TPC"); break;
case kTOF: snprintf(det, 3, "TOF"); break;
default : snprintf(det, 3, "undefined");
}
AliInfo(Form("Cut name : %s", GetName()));
AliInfo(Form("--> PID detector : %s", det));
AliInfo(Form("--> match criteria: %s", match));
AliInfo(Form("--> momentum range: %s", mom));
}
Bool_t AliRsnCutPIDNSigma::MatchITS(const AliVTrack *vtrack) const
{
if ((vtrack->GetStatus() & AliESDtrack::kITSin) == 0) return kFALSE;
if ((vtrack->GetStatus() & AliESDtrack::kITSpid) == 0) return kFALSE;
return kTRUE;
}
Bool_t AliRsnCutPIDNSigma::MatchTPC(const AliVTrack *vtrack) const
{
if ((vtrack->GetStatus() & AliESDtrack::kTPCin) == 0) return kFALSE;
return kTRUE;
}
Bool_t AliRsnCutPIDNSigma::MatchTOF(const AliVTrack *vtrack) const
{
if ((vtrack->GetStatus() & AliESDtrack::kTOFout) == 0) return kFALSE;
if ((vtrack->GetStatus() & AliESDtrack::kTIME) == 0) return kFALSE;
return kTRUE;
}
Bool_t AliRsnCutPIDNSigma::MatchDetector(const AliVTrack *vtrack) const
{
switch (fDetector) {
case kITS: return MatchITS(vtrack);
case kTPC: return MatchTPC(vtrack);
case kTOF: return MatchTOF(vtrack);
default : return kFALSE;
}
}
void AliRsnCutPIDNSigma::AddPIDRange(Double_t nsigma, Double_t pmin, Double_t pmax)
{
Int_t n = fRanges.GetEntries();
new (fRanges[n]) AliRsnPIDRange(nsigma, pmin, pmax);
}
void AliRsnCutPIDNSigma::SinglePIDRange(Double_t nsigma)
{
fRanges.Delete();
new (fRanges[0]) AliRsnPIDRange(nsigma, 0.0, 1E20);
}
AliRsnCutPIDNSigma.cxx:10 AliRsnCutPIDNSigma.cxx:11 AliRsnCutPIDNSigma.cxx:12 AliRsnCutPIDNSigma.cxx:13 AliRsnCutPIDNSigma.cxx:14 AliRsnCutPIDNSigma.cxx:15 AliRsnCutPIDNSigma.cxx:16 AliRsnCutPIDNSigma.cxx:17 AliRsnCutPIDNSigma.cxx:18 AliRsnCutPIDNSigma.cxx:19 AliRsnCutPIDNSigma.cxx:20 AliRsnCutPIDNSigma.cxx:21 AliRsnCutPIDNSigma.cxx:22 AliRsnCutPIDNSigma.cxx:23 AliRsnCutPIDNSigma.cxx:24 AliRsnCutPIDNSigma.cxx:25 AliRsnCutPIDNSigma.cxx:26 AliRsnCutPIDNSigma.cxx:27 AliRsnCutPIDNSigma.cxx:28 AliRsnCutPIDNSigma.cxx:29 AliRsnCutPIDNSigma.cxx:30 AliRsnCutPIDNSigma.cxx:31 AliRsnCutPIDNSigma.cxx:32 AliRsnCutPIDNSigma.cxx:33 AliRsnCutPIDNSigma.cxx:34 AliRsnCutPIDNSigma.cxx:35 AliRsnCutPIDNSigma.cxx:36 AliRsnCutPIDNSigma.cxx:37 AliRsnCutPIDNSigma.cxx:38 AliRsnCutPIDNSigma.cxx:39 AliRsnCutPIDNSigma.cxx:40 AliRsnCutPIDNSigma.cxx:41 AliRsnCutPIDNSigma.cxx:42 AliRsnCutPIDNSigma.cxx:43 AliRsnCutPIDNSigma.cxx:44 AliRsnCutPIDNSigma.cxx:45 AliRsnCutPIDNSigma.cxx:46 AliRsnCutPIDNSigma.cxx:47 AliRsnCutPIDNSigma.cxx:48 AliRsnCutPIDNSigma.cxx:49 AliRsnCutPIDNSigma.cxx:50 AliRsnCutPIDNSigma.cxx:51 AliRsnCutPIDNSigma.cxx:52 AliRsnCutPIDNSigma.cxx:53 AliRsnCutPIDNSigma.cxx:54 AliRsnCutPIDNSigma.cxx:55 AliRsnCutPIDNSigma.cxx:56 AliRsnCutPIDNSigma.cxx:57 AliRsnCutPIDNSigma.cxx:58 AliRsnCutPIDNSigma.cxx:59 AliRsnCutPIDNSigma.cxx:60 AliRsnCutPIDNSigma.cxx:61 AliRsnCutPIDNSigma.cxx:62 AliRsnCutPIDNSigma.cxx:63 AliRsnCutPIDNSigma.cxx:64 AliRsnCutPIDNSigma.cxx:65 AliRsnCutPIDNSigma.cxx:66 AliRsnCutPIDNSigma.cxx:67 AliRsnCutPIDNSigma.cxx:68 AliRsnCutPIDNSigma.cxx:69 AliRsnCutPIDNSigma.cxx:70 AliRsnCutPIDNSigma.cxx:71 AliRsnCutPIDNSigma.cxx:72 AliRsnCutPIDNSigma.cxx:73 AliRsnCutPIDNSigma.cxx:74 AliRsnCutPIDNSigma.cxx:75 AliRsnCutPIDNSigma.cxx:76 AliRsnCutPIDNSigma.cxx:77 AliRsnCutPIDNSigma.cxx:78 AliRsnCutPIDNSigma.cxx:79 AliRsnCutPIDNSigma.cxx:80 AliRsnCutPIDNSigma.cxx:81 AliRsnCutPIDNSigma.cxx:82 AliRsnCutPIDNSigma.cxx:83 AliRsnCutPIDNSigma.cxx:84 AliRsnCutPIDNSigma.cxx:85 AliRsnCutPIDNSigma.cxx:86 AliRsnCutPIDNSigma.cxx:87 AliRsnCutPIDNSigma.cxx:88 AliRsnCutPIDNSigma.cxx:89 AliRsnCutPIDNSigma.cxx:90 AliRsnCutPIDNSigma.cxx:91 AliRsnCutPIDNSigma.cxx:92 AliRsnCutPIDNSigma.cxx:93 AliRsnCutPIDNSigma.cxx:94 AliRsnCutPIDNSigma.cxx:95 AliRsnCutPIDNSigma.cxx:96 AliRsnCutPIDNSigma.cxx:97 AliRsnCutPIDNSigma.cxx:98 AliRsnCutPIDNSigma.cxx:99 AliRsnCutPIDNSigma.cxx:100 AliRsnCutPIDNSigma.cxx:101 AliRsnCutPIDNSigma.cxx:102 AliRsnCutPIDNSigma.cxx:103 AliRsnCutPIDNSigma.cxx:104 AliRsnCutPIDNSigma.cxx:105 AliRsnCutPIDNSigma.cxx:106 AliRsnCutPIDNSigma.cxx:107 AliRsnCutPIDNSigma.cxx:108 AliRsnCutPIDNSigma.cxx:109 AliRsnCutPIDNSigma.cxx:110 AliRsnCutPIDNSigma.cxx:111 AliRsnCutPIDNSigma.cxx:112 AliRsnCutPIDNSigma.cxx:113 AliRsnCutPIDNSigma.cxx:114 AliRsnCutPIDNSigma.cxx:115 AliRsnCutPIDNSigma.cxx:116 AliRsnCutPIDNSigma.cxx:117 AliRsnCutPIDNSigma.cxx:118 AliRsnCutPIDNSigma.cxx:119 AliRsnCutPIDNSigma.cxx:120 AliRsnCutPIDNSigma.cxx:121 AliRsnCutPIDNSigma.cxx:122 AliRsnCutPIDNSigma.cxx:123 AliRsnCutPIDNSigma.cxx:124 AliRsnCutPIDNSigma.cxx:125 AliRsnCutPIDNSigma.cxx:126 AliRsnCutPIDNSigma.cxx:127 AliRsnCutPIDNSigma.cxx:128 AliRsnCutPIDNSigma.cxx:129 AliRsnCutPIDNSigma.cxx:130 AliRsnCutPIDNSigma.cxx:131 AliRsnCutPIDNSigma.cxx:132 AliRsnCutPIDNSigma.cxx:133 AliRsnCutPIDNSigma.cxx:134 AliRsnCutPIDNSigma.cxx:135 AliRsnCutPIDNSigma.cxx:136 AliRsnCutPIDNSigma.cxx:137 AliRsnCutPIDNSigma.cxx:138 AliRsnCutPIDNSigma.cxx:139 AliRsnCutPIDNSigma.cxx:140 AliRsnCutPIDNSigma.cxx:141 AliRsnCutPIDNSigma.cxx:142 AliRsnCutPIDNSigma.cxx:143 AliRsnCutPIDNSigma.cxx:144 AliRsnCutPIDNSigma.cxx:145 AliRsnCutPIDNSigma.cxx:146 AliRsnCutPIDNSigma.cxx:147 AliRsnCutPIDNSigma.cxx:148 AliRsnCutPIDNSigma.cxx:149 AliRsnCutPIDNSigma.cxx:150 AliRsnCutPIDNSigma.cxx:151 AliRsnCutPIDNSigma.cxx:152 AliRsnCutPIDNSigma.cxx:153 AliRsnCutPIDNSigma.cxx:154 AliRsnCutPIDNSigma.cxx:155 AliRsnCutPIDNSigma.cxx:156 AliRsnCutPIDNSigma.cxx:157 AliRsnCutPIDNSigma.cxx:158 AliRsnCutPIDNSigma.cxx:159 AliRsnCutPIDNSigma.cxx:160 AliRsnCutPIDNSigma.cxx:161 AliRsnCutPIDNSigma.cxx:162 AliRsnCutPIDNSigma.cxx:163 AliRsnCutPIDNSigma.cxx:164 AliRsnCutPIDNSigma.cxx:165 AliRsnCutPIDNSigma.cxx:166 AliRsnCutPIDNSigma.cxx:167 AliRsnCutPIDNSigma.cxx:168 AliRsnCutPIDNSigma.cxx:169 AliRsnCutPIDNSigma.cxx:170 AliRsnCutPIDNSigma.cxx:171 AliRsnCutPIDNSigma.cxx:172 AliRsnCutPIDNSigma.cxx:173 AliRsnCutPIDNSigma.cxx:174 AliRsnCutPIDNSigma.cxx:175 AliRsnCutPIDNSigma.cxx:176 AliRsnCutPIDNSigma.cxx:177 AliRsnCutPIDNSigma.cxx:178 AliRsnCutPIDNSigma.cxx:179 AliRsnCutPIDNSigma.cxx:180 AliRsnCutPIDNSigma.cxx:181 AliRsnCutPIDNSigma.cxx:182 AliRsnCutPIDNSigma.cxx:183 AliRsnCutPIDNSigma.cxx:184 AliRsnCutPIDNSigma.cxx:185 AliRsnCutPIDNSigma.cxx:186 AliRsnCutPIDNSigma.cxx:187 AliRsnCutPIDNSigma.cxx:188 AliRsnCutPIDNSigma.cxx:189 AliRsnCutPIDNSigma.cxx:190 AliRsnCutPIDNSigma.cxx:191 AliRsnCutPIDNSigma.cxx:192 AliRsnCutPIDNSigma.cxx:193 AliRsnCutPIDNSigma.cxx:194 AliRsnCutPIDNSigma.cxx:195 AliRsnCutPIDNSigma.cxx:196 AliRsnCutPIDNSigma.cxx:197 AliRsnCutPIDNSigma.cxx:198 AliRsnCutPIDNSigma.cxx:199 AliRsnCutPIDNSigma.cxx:200 AliRsnCutPIDNSigma.cxx:201 AliRsnCutPIDNSigma.cxx:202 AliRsnCutPIDNSigma.cxx:203 AliRsnCutPIDNSigma.cxx:204 AliRsnCutPIDNSigma.cxx:205 AliRsnCutPIDNSigma.cxx:206 AliRsnCutPIDNSigma.cxx:207 AliRsnCutPIDNSigma.cxx:208 AliRsnCutPIDNSigma.cxx:209 AliRsnCutPIDNSigma.cxx:210 AliRsnCutPIDNSigma.cxx:211 AliRsnCutPIDNSigma.cxx:212 AliRsnCutPIDNSigma.cxx:213 AliRsnCutPIDNSigma.cxx:214 AliRsnCutPIDNSigma.cxx:215 AliRsnCutPIDNSigma.cxx:216 AliRsnCutPIDNSigma.cxx:217 AliRsnCutPIDNSigma.cxx:218 AliRsnCutPIDNSigma.cxx:219 AliRsnCutPIDNSigma.cxx:220 AliRsnCutPIDNSigma.cxx:221 AliRsnCutPIDNSigma.cxx:222 AliRsnCutPIDNSigma.cxx:223 AliRsnCutPIDNSigma.cxx:224 AliRsnCutPIDNSigma.cxx:225 AliRsnCutPIDNSigma.cxx:226 AliRsnCutPIDNSigma.cxx:227 AliRsnCutPIDNSigma.cxx:228 AliRsnCutPIDNSigma.cxx:229 AliRsnCutPIDNSigma.cxx:230 AliRsnCutPIDNSigma.cxx:231 AliRsnCutPIDNSigma.cxx:232 AliRsnCutPIDNSigma.cxx:233 AliRsnCutPIDNSigma.cxx:234 AliRsnCutPIDNSigma.cxx:235 AliRsnCutPIDNSigma.cxx:236 AliRsnCutPIDNSigma.cxx:237 AliRsnCutPIDNSigma.cxx:238 AliRsnCutPIDNSigma.cxx:239 AliRsnCutPIDNSigma.cxx:240 AliRsnCutPIDNSigma.cxx:241 AliRsnCutPIDNSigma.cxx:242 AliRsnCutPIDNSigma.cxx:243 AliRsnCutPIDNSigma.cxx:244 AliRsnCutPIDNSigma.cxx:245 AliRsnCutPIDNSigma.cxx:246 AliRsnCutPIDNSigma.cxx:247 AliRsnCutPIDNSigma.cxx:248 AliRsnCutPIDNSigma.cxx:249 AliRsnCutPIDNSigma.cxx:250 AliRsnCutPIDNSigma.cxx:251 AliRsnCutPIDNSigma.cxx:252 AliRsnCutPIDNSigma.cxx:253 AliRsnCutPIDNSigma.cxx:254 AliRsnCutPIDNSigma.cxx:255 AliRsnCutPIDNSigma.cxx:256 AliRsnCutPIDNSigma.cxx:257 AliRsnCutPIDNSigma.cxx:258 AliRsnCutPIDNSigma.cxx:259 AliRsnCutPIDNSigma.cxx:260 AliRsnCutPIDNSigma.cxx:261 AliRsnCutPIDNSigma.cxx:262 AliRsnCutPIDNSigma.cxx:263 AliRsnCutPIDNSigma.cxx:264 AliRsnCutPIDNSigma.cxx:265 AliRsnCutPIDNSigma.cxx:266 AliRsnCutPIDNSigma.cxx:267 AliRsnCutPIDNSigma.cxx:268 AliRsnCutPIDNSigma.cxx:269 AliRsnCutPIDNSigma.cxx:270 AliRsnCutPIDNSigma.cxx:271 AliRsnCutPIDNSigma.cxx:272 AliRsnCutPIDNSigma.cxx:273 AliRsnCutPIDNSigma.cxx:274 AliRsnCutPIDNSigma.cxx:275 AliRsnCutPIDNSigma.cxx:276 AliRsnCutPIDNSigma.cxx:277 AliRsnCutPIDNSigma.cxx:278 AliRsnCutPIDNSigma.cxx:279 AliRsnCutPIDNSigma.cxx:280 AliRsnCutPIDNSigma.cxx:281 AliRsnCutPIDNSigma.cxx:282 AliRsnCutPIDNSigma.cxx:283 AliRsnCutPIDNSigma.cxx:284 AliRsnCutPIDNSigma.cxx:285 AliRsnCutPIDNSigma.cxx:286 AliRsnCutPIDNSigma.cxx:287 AliRsnCutPIDNSigma.cxx:288 AliRsnCutPIDNSigma.cxx:289 AliRsnCutPIDNSigma.cxx:290 AliRsnCutPIDNSigma.cxx:291 AliRsnCutPIDNSigma.cxx:292 AliRsnCutPIDNSigma.cxx:293 AliRsnCutPIDNSigma.cxx:294 AliRsnCutPIDNSigma.cxx:295