]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliPID.h
put delete before placement new, mem. leak possible in case entries==0 because of...
[u/mrichter/AliRoot.git] / STEER / AliPID.h
index 9c9494e4dfe5aef86ee17c3b7eb13fb2161b4ecd..39cb73a3e30f301d8b9e2eaef6fc038fed1bc6d7 100644 (file)
@@ -20,7 +20,8 @@ class AliPID : public TObject {
  public:
   enum {
     kSPECIES = 5,    // Number of particle species recognized by the PID
-    kSPECIESN = 10   // Number of charged+neutral particle species recognized by the PHOS/EMCAL PID
+    kSPECIESN = 10,  // Number of charged+neutral particle species recognized by the PHOS/EMCAL PID
+    kSPECIESLN = 4   // Number of light nuclei: deuteron, triton, helium-3 and alpha
   };
   enum EParticleType {
     kElectron = 0, 
@@ -33,12 +34,22 @@ class AliPID : public TObject {
     kNeutron = 7, 
     kKaon0 = 8, 
     kEleCon = 9,
-    kUnknown = 10
+    kDeuteron = 10,
+    kTriton = 11,
+    kHe3 = 12,
+    kAlpha = 13,
+    kUnknown = 14
   };
-  static Float_t       ParticleMass(Int_t iType) 
-    {return fgkParticleMass[iType];};
+  static Float_t       ParticleMass(Int_t iType) {
+     if(!fgkParticleMass[0]) Init(); 
+     return fgkParticleMass[iType];
+  }
   static const char*   ParticleName(Int_t iType) 
     {return fgkParticleName[iType];};
+  static const char*   ParticleShortName(Int_t iType) 
+    {return fgkParticleShortName[iType];};
+  static const char*   ParticleLatexName(Int_t iType) 
+    {return fgkParticleLatexName[iType];};
   static Int_t         ParticleCode(Int_t iType) 
     {return fgkParticleCode[iType];};
 
@@ -57,6 +68,9 @@ class AliPID : public TObject {
   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);
@@ -65,17 +79,19 @@ class AliPID : public TObject {
 
  private:
 
-  void                 Init();
+  static void          Init();
 
   Bool_t               fCharged;                   // flag for charged/neutral
   Double_t             fProbDensity[kSPECIESN];    // probability densities
   static Double_t      fgPrior[kSPECIESN];         // a priori probabilities
 
-  static /*const*/ Float_t fgkParticleMass[kSPECIESN+1]; // particle masses
-  static const char*   fgkParticleName[kSPECIESN+1]; // particle names
-  static const Int_t   fgkParticleCode[kSPECIESN+1]; // particle codes
+  static /*const*/ Float_t fgkParticleMass[kSPECIESN+kSPECIESLN+1]; // particle masses
+  static const char*   fgkParticleName[kSPECIESN+kSPECIESLN+1]; // particle names
+  static const char*   fgkParticleShortName[kSPECIESN+kSPECIESLN+1]; // particle names
+  static const char*   fgkParticleLatexName[kSPECIESN+kSPECIESLN+1]; // particle names
+  static const Int_t   fgkParticleCode[kSPECIESN+kSPECIESLN+1]; // particle codes
 
-  ClassDef(AliPID, 1)    // particle id probability densities
+  ClassDef(AliPID, 2)    // particle id probability densities
 };