#include "AliAODVertex.h"
#include "AliAODTrack.h"
+#include "AliRsnPIDDefESD.h"
#include "AliRsnDaughter.h"
ClassImp(AliRsnDaughter)
}
//_____________________________________________________________________________
-Bool_t AliRsnDaughter::CombineWithPriors(Double_t *priors)
+Bool_t AliRsnDaughter::CombineWithPriors(Double_t *priors, AliRsnPIDDefESD *pidDef)
{
//
// Combine current PID weights (assumed to be them) with prior probs
Int_t i;
Double_t sum = 0.0;
+ // get PID weights according to definition
+ // if the reference is not ESD or the pidDef is null
+ // of it is not null but is requires the ESD pid,
+ // the standard PID value is used, otherwise
+ if (pidDef)
+ {
+ AliESDtrack *esdTrack = GetRefESD();
+ if (esdTrack) pidDef->ComputeWeights(esdTrack, fPID);
+ }
+ else
+ {
+ for (i = 0; i < AliPID::kSPECIES; i++) fPID[i] = fRef->PID()[i];
+ }
+
// multiply weights and priors
for (i = 0; i < AliPID::kSPECIES; i++) {
- fPID[i] = priors[i] * fRef->PID()[i];
+ fPID[i] *= priors[i];
sum += fPID[i];
}
if (sum <= (Double_t) 0.) {
class AliStack;
class AliESDtrack;
class AliAODEvent;
+class AliRsnPIDDefESD;
class AliRsnDaughter : public TObject
{
// PID
const Double_t *PID() const {return fRef->PID();}
- Bool_t CombineWithPriors(Double_t *priors);
+ Bool_t CombineWithPriors(Double_t *priors, AliRsnPIDDefESD *pidDef = 0x0);
AliPID::EParticleType RealisticPID() const;
AliPID::EParticleType PerfectPID() const;
Double_t PIDProb(AliPID::EParticleType type) const {return PID()[(Int_t)type];}
}
}
+//_____________________________________________________________________________
+const char* AliRsnPIDDefESD::SchemeName() {
+//
+// Scheme name for messages
+//
+
+ TString out;
+
+ Int_t i, ndet = 0;
+
+ for (i = 0; i < kDetectors; i++)
+ if (fUseDet[i])
+ {
+ if (ndet > 0) out += '_';
+ out.Append(DetName((EDetector)i));
+ }
+
+ return out.Data();
+}
+
//_____________________________________________________________________________
void AliRsnPIDDefESD::SetDivValue(EDetector det, Double_t value, Bool_t userHigher) {
//