]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSdEdxSamples.h
- fix
[u/mrichter/AliRoot.git] / ITS / AliITSdEdxSamples.h
index 21a17f23b09f6e32c35e69daf1c9951b074e467c..8cbd4c9fa50364ca9c3dc738251149fb8ff0cdfe 100644 (file)
@@ -22,21 +22,48 @@ class AliITSdEdxSamples : public TObject {
   AliITSdEdxSamples();
   AliITSdEdxSamples(Int_t nSamples, Double_t* esamples, Double_t* xsamples, Double_t mom, Int_t specie=0);
   AliITSdEdxSamples(const AliITSdEdxSamples& source);
+  AliITSdEdxSamples& operator=(const AliITSdEdxSamples& source); 
   virtual ~AliITSdEdxSamples(){};
 
   void SetdESamples(Int_t nSamples, Double_t* samples);
   void SetdxSamples(Int_t nSamples, Double_t* samples);
   void SetSamplesAndMomenta(Int_t nSamples, Double_t* esamples, Double_t* xsamples, Double_t* mom);
+  void SetNSamples(Int_t nSamples){
+    fNSamples=nSamples;
+  }
+  void SetLayerSample(Int_t iLayer, Bool_t haspoint, Double_t dE=0., Double_t dx=0., Double_t p=0.);
+
   void SetMomentum(Double_t mom){
     fP=mom;
   }
   void SetParticleSpecieMC(Int_t specie){
     fParticleSpecie=specie;
   }
+  void SetClusterMap(UInt_t map){
+    fClusterMap=map;
+  }
+  void SetPointOnLayer(Int_t iLay){
+    fClusterMap|=(1<<iLay);
+  }
+  void SetLayersForPID(UInt_t laypid){
+    fLayersForPid=laypid;
+  }
+  void SetUseLayerForPid(Int_t iLay){
+    fLayersForPid|=(1<<iLay);
+  }
+  void SetNotUseLayerForPid(Int_t iLay){
+    if(fLayersForPid&(1<<iLay)) fLayersForPid-=(1<<iLay);
+  }
 
   Int_t GetNumberOfSamples() const {
     return fNSamples;
   }
+  Int_t GetNumberOfEffectiveSamples() const{
+    Int_t nS=0;
+    for (Int_t il=0; il<fNSamples; il++)  if(HasPointOnLayer(il)) nS++;
+    return nS;
+  }
+
   Double_t GetdESample(Int_t i) const {
     if(i<fNSamples) return fdESamples[i];
     else return 0.;
@@ -53,8 +80,7 @@ class AliITSdEdxSamples : public TObject {
     else return 0.;
   }
   Double_t GetdEdxSample(Int_t i) const { // keV/100um
-    if(i<fNSamples && fdxSamples[i]>0.) 
-      return fdESamples[i]/(fdxSamples[i]*100.);
+    if(i<fNSamples && fdxSamples[i]>0.) return fdESamples[i]/(fdxSamples[i]*100.);
     else return 0.;
   }
 
@@ -68,23 +94,47 @@ class AliITSdEdxSamples : public TObject {
   Int_t GetParticleSpecieMC() const {
     return fParticleSpecie;
   }
+  UInt_t GetClusterMap() const{
+    return fClusterMap;
+  }
+  Bool_t HasPointOnLayer(Int_t iLay) const{
+    return fClusterMap&(1<<iLay);
+  }
+  UInt_t GetLayersForPid() const{
+    return fLayersForPid;
+  }
+  Bool_t UseLayerForPid(Int_t iLay) const{
+    return fLayersForPid&(1<<iLay);
+  }
+
+  void PrintAll() const;
+  void PrintClusterMap() const;
 
   Double_t GetTruncatedMean(Double_t frac=0.5, Double_t mindedx=0.) const;
   Double_t GetWeightedMean(Double_t mindedx=0.) const;
-  void     GetConditionalProbabilities(AliITSPidParams* pars, Double_t condprob[AliPID::kSPECIES], Double_t mindedx=0.) const;
+  void     GetConditionalProbabilities(const AliITSPidParams* pars, Double_t condprob[AliPID::kSPECIES], Double_t mindedx=0.) const;
 
 
  protected:
+
+  void SetClusterMapFromdE(){
+    fClusterMap=0;
+    for(Int_t i=0; i<fNSamples; i++)
+      if(fdESamples[i]>0.) SetPointOnLayer(i);
+  }
+
   enum{kMaxSamples=10}; // max. n. of layers with dE/dx info
 
-  Int_t    fNSamples;                   // number of samples
-  Double_t fdESamples[kMaxSamples];     // dE samples (keV)
-  Double_t fdxSamples[kMaxSamples];     // dx samples (cm)
-  Double_t fP;                          // track momentum
-  Int_t    fParticleSpecie;             // MC generated particle
-  Double_t fPAtSample[kMaxSamples];     // track momentum at specific samples
-  
-  ClassDef(AliITSdEdxSamples,2);
+  Int_t    fNSamples;                // number of samples
+  UInt_t   fClusterMap;              // map of clusters in layers
+  Double_t fdESamples[kMaxSamples];  // dE samples (keV)
+  Double_t fdxSamples[kMaxSamples];  // dx samples (cm)
+  Double_t fP;                       // track momentum
+  Int_t    fParticleSpecie;          // MC generated particle
+  Double_t fPAtSample[kMaxSamples];  // track momentum at specific samples
+  UInt_t   fLayersForPid;            // bit-map to enable/disable layers in PID
+
+  ClassDef(AliITSdEdxSamples,3);
 
 };
 #endif