Commiting before moving code from `AliFMDSimulator' to `AliFMD' (and
[u/mrichter/AliRoot.git] / FMD / AliFMDSimulator.h
index dd494d9c80afab1e110ccc3bbc49e825fab72505..3864ee12630fa18bf7c37fb349848a42aa31eb0e 100644 (file)
@@ -13,6 +13,9 @@
 #ifndef TLorentzVector
 # include <TLorentzVector.h>
 #endif
+#ifndef TArrayI
+# include <TArrayI.h>
+#endif
 class TVector3;
 class AliFMD;
 class AliFMDRing;
@@ -20,6 +23,7 @@ class AliFMDDetector;
 class AliFMD1;
 class AliFMD2;
 class AliFMD3;
+class TObjArray;
 
 /** Simulation of the FMD. 
     This class builds the geometry, and processes hits in the FMD */ 
@@ -36,16 +40,26 @@ public:
   virtual void DefineGeometry() = 0;
   /** Deal with a hit in the FMD */
   virtual void Exec(Option_t* option="");
-
+  virtual void EndEvent();
+  virtual void UseDivided(Bool_t use=kTRUE)  { fUseDivided = use; }
+  virtual void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
 protected:  
   AliFMD*        fFMD;           //! Pointer to module 
   Bool_t         fDetailed;      // Whether to make a detailed simulation 
-  Int_t         fInnerId;       //! ID of inner ring strips
-  Int_t         fOuterId;       //! ID of outer ring strips
   TLorentzVector fCurrentV;      //! Current hit postition 
   TLorentzVector fCurrentP;      //! Current hit momentum
+  TArrayI        fActiveId;      //! Active volume ID's
   Int_t          fCurrentPdg;    //! Current hit particle code 
   Double_t       fCurrentDeltaE; //! Current hit energy loss
+  Bool_t         fUseDivided;    // Divided volumes
+  Bool_t         fUseAssembly;   // Assembly volumes
+  
+  Bool_t         IsActive(Int_t volId) const;
+  Bool_t         VMC2FMD(Int_t copy, TLorentzVector& v,
+                         UShort_t& detector, Char_t& ring,
+                         UShort_t& sector, UShort_t& stripe);
+  Bool_t         VMC2FMD(TLorentzVector& v, UShort_t& detector,
+                         Char_t& ring, UShort_t& sector, UShort_t& strip);
 
   static const Char_t* fgkActiveName;  // Name of Active volumes
   static const Char_t* fgkSectorName;  // Name of Sector volumes
@@ -73,13 +87,16 @@ protected:
     kPcbId,                // ID index of PCB medium
     kSiChipId,             // ID index of Si Chip medium
     kAlId,                 // ID index of Al medium
-    kCarbonId              // ID index of Carbon medium
+    kCarbonId,             // ID index of Carbon medium
+    kCopperId,             // ID index of Copper Medium
+    kKaptonId              // ID index of Kapton Medium
   };  
 
   Int_t fSectorOff;        // Sector offset in volume tree 
   Int_t fModuleOff;        // Module offset in volume tree
   Int_t fRingOff;          // Ring offset in the volume tree 
   Int_t fDetectorOff;      // Detector offfset in the volume tree 
+  TObjArray* fBad;         //! List of bad hits
   
   ClassDef(AliFMDSimulator,0) // Simulation class for the FMD
 };