New TRD files from C.Blume.
[u/mrichter/AliRoot.git] / TRD / AliTRDv2.h
index 26d0d82d476366255bae1bbebefed85d1b80006d..420e028a81bd32d884c975e6e69d3e26b611c6a2 100644 (file)
@@ -4,14 +4,18 @@
 //  Manager and hits classes for set:TRD version 2    //
 ////////////////////////////////////////////////////////
  
+#include <TF1.h> 
 #include "AliTRD.h"
 
+// Energy spectrum of the delta-rays 
+Double_t Ermilova(Double_t *x, Double_t *par);
+
 class AliTRDv2 : public AliTRD {
 
 public:
   AliTRDv2() {}
   AliTRDv2(const char *name, const char *title);
-  virtual      ~AliTRDv2() {}
+  virtual      ~AliTRDv2();
   virtual void  CreateGeometry();
   virtual void  CreateMaterials();
   virtual Int_t IsVersion() const {return 2;}
@@ -20,72 +24,16 @@ public:
   virtual void  DrawModule();
 
 protected:
-  Int_t        fIdSenO1;    // Sensitive volume identifier for outer chambers
-  Int_t        fIdSenO2;    // Sensitive volume identifier for outer chambers
-  Int_t        fIdSenO3;    // Sensitive volume identifier for outer chambers
-  Int_t        fIdSenO4;    // Sensitive volume identifier for outer chambers
-  Int_t        fIdSenO5;    // Sensitive volume identifier for outer chambers
-  Int_t        fIdSenO6;    // Sensitive volume identifier for outer chambers
-  Int_t        fIdSenI1;    // Sensitive volume identifier for inner chambers
-  Int_t        fIdSenI2;    // Sensitive volume identifier for inner chambers
-  Int_t        fIdSenI3;    // Sensitive volume identifier for inner chambers
-  Int_t        fIdSenI4;    // Sensitive volume identifier for inner chambers
-  Int_t        fIdSenI5;    // Sensitive volume identifier for inner chambers
-  Int_t        fIdSenI6;    // Sensitive volume identifier for inner chambers
-            
+  Int_t        fIdSensI[ncham];  // Sensitive volume identifier (inner chambers)
+  Int_t        fIdSensN[ncham];  // Sensitive volume identifier (neighbouring chambers)
+  Int_t        fIdSensO[ncham];  // Sensitive volume identifier (outer chambers)
+
 private:
-  // Inline functions for AliTRDv2
-  
-  inline Float_t Eloss(Float_t rndm)
-    {
-      //
-      // Calculates the energy loss 
-      // 1/E^2. distribution for the fluctuations
-      //
-      // Exponent of the distribution for the energy loss 
-      // 2.0 is the apropriate value for Argon, 2.2 would be for Neon,
-      // and how about Xenon? We take the Argon value for the time being.
-      const Float_t kEexp = 2.0;
-      // First ionization potential for the gas mixture (90% Xe + 10% CO2)
-      // taken from: Ionization Measurements in High Energy Physics, Springer
-      const Float_t kPoti = 12.3E-9;
-      // Maximum energy (10 keV);
-      const Float_t kEend = 10.0E-6;
-      
-      Float_t ex   = 1. - kEexp;
-      Float_t xpot = TMath::Power(kPoti,ex);
-      Float_t xend = TMath::Power(kEend,ex);
-      Float_t elos = (1. - rndm)*xpot + rndm*xend;
-      
-      return(TMath::Power(elos,(1./ex)) - kPoti);
-      
-    }
-  
-  inline Float_t BetheBloch(Float_t xx) 
-    {
-      //
-      // Parametrization of the Bethe-Bloch-curve
-      // The parametrization is the same as for the TPC and is taken from
-      // Lehrhaus.
-      // The parameters have been adjusted to Xe-data found in:
-      // Allison & Cobb, Ann. Rev. Nucl. Sci. (1980), 30, 253
-      //
-      const Float_t kP1 = 0.76176E-1;
-      const Float_t kP2 = 10.632;
-      const Float_t kP3 = 3.17983E-6;
-      const Float_t kP4 = 1.8631;
-      const Float_t kP5 = 1.9479;
-      
-      Float_t yy = xx / TMath::Sqrt(1. + xx*xx);
-      Float_t aa = TMath::Power(yy,kP4);
-      Float_t bb = TMath::Power((1./xx),kP5);
-      bb = TMath::Log(kP3 + bb);
-      
-      return((kP2 - aa - bb)*kP1 / aa);
-      
-    }
+  virtual Double_t BetheBloch(Double_t bg);
+
+  TF1         *fDeltaE;          // Energy distribution of the delta-electrons
   
-  ClassDef(AliTRDv2,1)     // Transition Radiation Detector version 2
+  ClassDef(AliTRDv2,1)           // Transition Radiation Detector version 2
 };
 
 #endif