#if !defined( __CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
+ #include <TROOT.h>
#include <TTree.h>
#include <TFile.h>
#include <TH1F.h>
#endif
+extern TROOT *gROOT;
+
Int_t AliESDv0Analysis(const Char_t *dir=".") {
TH1F *hm=(TH1F*)gROOT->FindObject("hm");
if (!hm) {
//****** Tentative particle type "concentrations"
Double_t c[5]={0.0, 0.0, 1, 0, 1};
- AliPID::SetPriors(c);
+ AliPID pid;
+ pid.SetPriors(c);
//******* The loop over events
while (tree->GetEvent(n)) {
// Check if the "proton track" is a proton
if ((protonTrk->GetStatus()&AliESDtrack::kESDpid)!=0) {
Double_t r[10]; protonTrk->GetESDpid(r);
- AliPID pid(r);
+ pid.SetProbabilities(r);
Double_t pp=pid.GetProbability(AliPID::kProton);
if (pp < pid.GetProbability(AliPID::kElectron)) continue;
if (pp < pid.GetProbability(AliPID::kMuon)) continue;
//Check if the "pion track" is a pion
if ((pionTrk->GetStatus()&AliESDtrack::kESDpid)!=0) {
Double_t r[10]; pionTrk->GetESDpid(r);
- AliPID pid(r);
+ pid.SetProbabilities(r);
Double_t ppi=pid.GetProbability(AliPID::kPion);
if (ppi < pid.GetProbability(AliPID::kElectron)) continue;
if (ppi < pid.GetProbability(AliPID::kMuon)) continue;
fProbDensity[i] = pid.fProbDensity[i];
}
+//_______________________________________________________________________
+void AliPID::SetProbabilities(const Double_t* probDensity, Bool_t charged)
+{
+ //
+ // Set the probability densities
+ //
+ for (Int_t i = 0; i < kSPECIES; i++)
+ fProbDensity[i] = probDensity[i];
+
+ for (Int_t i = kSPECIES; i < kSPECIESN; i++)
+ fProbDensity[i] = ((charged) ? 0 : probDensity[i]);
+}
+
//_______________________________________________________________________
AliPID& AliPID::operator = (const AliPID& pid)
{
EParticleType GetMostProbable(const Double_t* prior) const;
EParticleType GetMostProbable() const;
+ void SetProbabilities(const Double_t* probabilities,
+ Bool_t charged = kTRUE);
+
static void SetPriors(const Double_t* prior,
Bool_t charged = kTRUE);
static void SetPrior(EParticleType iType, Double_t prior);