return kFALSE;
}
- // PID
- Double_t nsigmaTPC = TMath::Abs(pid->NumberOfSigmasTPC(track, AliPID::kKaon));
- Double_t nsigmaTOF = TMath::Abs(pid->NumberOfSigmasTOF(track, AliPID::kKaon));
- Bool_t matchTOF = MatchTOF(track);
+ // check if TOF is matched
+ // and computes all values used in the PID cut
+ Bool_t isTOF = MatchTOF(track);
+ Double_t nsTPC = TMath::Abs(pid->NumberOfSigmasTPC(track, AliPID::kKaon));
+ Double_t nsTOF = TMath::Abs(pid->NumberOfSigmasTOF(track, AliPID::kKaon));
// if only one detector is chosen, do this here
if (fOnlyTPC) {
- return (nsigmaTPC <= fCutTPC);
+ return (nsTPC <= fCutTPC);
} else if (fOnlyTOF) {
- return (matchTOF && (nsigmaTOF <= fCutTOF));
+ return (isTOF && (nsTOF <= fCutTOF));
} else {
// combined PID:
// below momentum threshold, start with TPC
if (track->P() < fTOFthreshold) {
- if (nsigmaTPC > fCutTPC) return kFALSE;
- if (matchTOF && (nsigmaTOF > fCutTOF)) return kFALSE;
- return kTRUE;
+ if (isTOF)
+ return ((nsTPC <= fCutTPC) && (nsTOF <= fCutTOF));
+ else
+ return (nsTPC <= fCutTPC);
} else {
- if (!matchTOF) return kFALSE;
- if (nsigmaTOF > fCutTOF) return kFALSE;
- if (nsigmaTPC > 4.0) return kFALSE;
+ if (isTOF)
+ return ((nsTPC <= fCutTPC) && (nsTOF <= fCutTOF));
+ else
+ return kFALSE;
}
- return kTRUE;
}
}
AliRsnCutTrackQuality *CutQuality() {return &fCutQuality;}
Double_t GetTOFthreshold() const {return fTOFthreshold;}
- void SetTOFthreshold(Double_t value) {fTOFthreshold = value;}
- void SetOnlyQuality(Bool_t yn = kTRUE) {fOnlyQuality = yn;}
- void SetOnlyTPC(Bool_t yn = kTRUE) {fOnlyTPC = yn;}
- void SetOnlyTOF(Bool_t yn = kTRUE) {fOnlyTOF = yn;}
- void SetCutTPC(Double_t cut) {fCutTPC = cut;}
- void SetCutTOF(Double_t cut) {fCutTOF = cut;}
+ void SetTOFthreshold(Double_t value) {fTOFthreshold = value;}
+ void SetOnlyQuality(Bool_t yn = kTRUE) {fOnlyQuality = yn;}
+ void SetOnlyTPC(Bool_t yn = kTRUE) {fOnlyTPC = yn;}
+ void SetOnlyTOF(Bool_t yn = kTRUE) {fOnlyTOF = yn;}
+ void SetCutTPC(Double_t cut) {fCutTPC = cut;}
+ void SetCutTOF(Double_t cut) {fCutTOF = cut;}
+ Bool_t MatchTOF(const AliVTrack *vtrack);
private:
- Bool_t MatchTOF(const AliVTrack *vtrack);
-
Bool_t fOnlyQuality; // switch off PID
Bool_t fOnlyTPC; // use only TPC PID
Bool_t fOnlyTOF; // use only TOF PID
return kFALSE;
}
- Bool_t isTOFpid = ((vtrack->GetStatus() & AliESDtrack::kTOFpid) != 0);
- Bool_t isTOFout = ((vtrack->GetStatus() & AliESDtrack::kTOFout) != 0);
- Bool_t isTIME = ((vtrack->GetStatus() & AliESDtrack::kTIME) != 0);
+ if (!(vtrack->GetStatus() & AliESDtrack::kTOFout)) return kFALSE;
+ if (!(vtrack->GetStatus() & AliESDtrack::kTIME )) return kFALSE;
- return (isTOFout && isTIME && isTOFpid);
+ return kTRUE;
}
#endif
#include "AliAODEvent.h"
#include "AliMCParticle.h"
#include "AliAODMCParticle.h"
+#include "AliEventplane.h"
#include "AliRsnCutSet.h"
#include "AliRsnMiniEvent.h"
// assign event-related values
miniEvent = new AliRsnMiniEvent;
miniEvent->Vz() = fInputEvent->GetPrimaryVertex()->GetZ();
- miniEvent->Angle() = 0.0;
+ miniEvent->Angle() = ComputeAngle();
miniEvent->Mult() = ComputeCentrality((check == 'E'));
AliDebugClass(1, Form("Event %d: vz = %f -- mult = %f -- angle = %f", fEvNum, miniEvent->Vz(), miniEvent->Mult(), miniEvent->Angle()));
// found a match: increment counter for both events
fNMixed[i1]++;
fNMixed[imix]++;
+ //cout << "Mixed " << i1 << " with " << imix << endl;
ProcessEvents(&evMain, evMix);
// if mixed enough times, stop
}
}
}
+//__________________________________________________________________________________________________
+Double_t AliRsnMiniAnalysisTask::ComputeAngle()
+{
+//
+// Get the plane angle
+//
+
+ AliEventplane *plane = fInputEvent->GetEventplane();
+ if (plane)
+ return plane->GetEventplane("Q");
+ else {
+ AliWarning("No event plane defined");
+ return 1E20;
+ }
+}
+
//__________________________________________________________________________________________________
Double_t AliRsnMiniAnalysisTask::ComputeCentrality(Bool_t isESD)
{
private:
Char_t CheckCurrentEvent();
+ Double_t ComputeAngle();
Double_t ComputeCentrality(Bool_t isESD);
void FillTrueMotherESD(AliRsnMiniEvent *event);
void FillTrueMotherAOD(AliRsnMiniEvent *event);