]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMD.h
Revived the geometry that Alla did orginally. The code is in the classes
[u/mrichter/AliRoot.git] / FMD / AliFMD.h
index 8dfdbd42fb30b1c081fb42fa50613d235d96eed4..12df6363dc8247e84118dc4423f7a5b2d0d757f7 100644 (file)
 #ifndef ALIDETECTOR_H 
 # include <AliDetector.h>
 #endif
-#ifndef ALIFMDSUBDETECTOR_H
-# include "AliFMDSubDetector.h"
-#endif
-#ifndef ALIFMDRING_H
-# include "AliFMDRing.h"
-#endif
 #ifndef ROOT_TBranch
 # include <TBranch.h>
 #endif
-#ifndef ROOT_TArrayI
-# include <TArrayI.h>
-#endif
+class TBranch;
+class TClonesArray;
+class TBrowser;
+class AliDigitizer;
+class AliFMDSimulator;
 
 //____________________________________________________________________
 class AliFMD : public AliDetector 
 {
 public:
   AliFMD();
-  AliFMD(const char *name, const char *title, bool detailed);
-  AliFMD(const AliFMD& FMD) : AliDetector(FMD)  {}  //copy ctor
+  AliFMD(const char *name, const char *title);
+  AliFMD(const AliFMD& other);
   virtual ~AliFMD(); 
-  AliFMD&               operator=(const AliFMD&)  {return *this;}
-
+  AliFMD& operator=(const AliFMD& other);
+  // Use old implementation
+  void UseOld(Bool_t use=kTRUE) { fUseOld = use;  }
+  void UseDivided(Bool_t use=kTRUE) { fUseDivided = use; }
+  void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
+  void UseGeo(Bool_t use=kTRUE) { fUseGeo = use; }
+  
+  
   // GEometry ANd Tracking (GEANT :-)
   virtual void   CreateGeometry();
   virtual void   CreateMaterials(); 
   virtual void   Init();
   virtual void   StepManager() = 0;
-  AliFMDSubDetector*    GetFMD1() const       { return fFMD1; }
-  AliFMDSubDetector*    GetFMD2() const       { return fFMD2; }
-  AliFMDSubDetector*    GetFMD3() const       { return fFMD3; }
-  AliFMDRing*           GetInner() const      { return fInner; }
-  AliFMDRing*           GetOuter() const      { return fOuter; }
 
   // Graphics and event display 
   virtual        void   BuildGeometry();
@@ -61,37 +58,37 @@ public:
   virtual TClonesArray* SDigits() { return fSDigits; }        
   virtual void          ResetSDigits();
   virtual void          AddHit(Int_t track, Int_t *vol, Float_t *hits);
-  virtual void          AddHit(Int_t    track, 
-                              UShort_t detector, 
-                              Char_t   ring, 
-                              UShort_t sector, 
-                              UShort_t strip, 
-                              Float_t  x=0,
-                              Float_t  y=0, 
-                              Float_t  z=0,
-                              Float_t  px=0, 
-                              Float_t  py=0, 
-                              Float_t  pz=0,
-                              Float_t  edep=0,
-                              Int_t    pdg=0,
-                              Float_t  t=0);
-  virtual        void   AddDigit(Int_t *digits);
-  virtual        void   AddDigit(UShort_t detector=0, 
-                                Char_t   ring='\0', 
-                                UShort_t sector=0, 
-                                UShort_t strip=0, 
-                                UShort_t count1=0, 
-                                Short_t  count2=-1, 
-                                Short_t  count3=-1);
+  virtual void          AddHitByFields(Int_t    track, 
+                                      UShort_t detector, 
+                                      Char_t   ring, 
+                                      UShort_t sector, 
+                                      UShort_t strip, 
+                                      Float_t  x=0,
+                                      Float_t  y=0, 
+                                      Float_t  z=0,
+                                      Float_t  px=0, 
+                                      Float_t  py=0, 
+                                      Float_t  pz=0,
+                                      Float_t  edep=0,
+                                      Int_t    pdg=0,
+                                      Float_t  t=0);
+  virtual        void   AddDigit(Int_t *digits, Int_t* notused=0);
+  virtual        void   AddDigitByFields(UShort_t detector=0, 
+                                        Char_t   ring='\0', 
+                                        UShort_t sector=0, 
+                                        UShort_t strip=0, 
+                                        UShort_t count1=0, 
+                                        Short_t  count2=-1, 
+                                        Short_t  count3=-1);
   virtual        void   AddSDigit(Int_t *digits);
-  virtual        void   AddSDigit(UShort_t detector=0, 
-                                 Char_t   ring='\0', 
-                                 UShort_t sector=0, 
-                                 UShort_t strip=0, 
-                                 Float_t  edep=0,
-                                 UShort_t count1=0, 
-                                 Short_t  count2=-1, 
-                                 Short_t  count3=-1);
+  virtual        void   AddSDigitByFields(UShort_t detector=0, 
+                                         Char_t   ring='\0', 
+                                         UShort_t sector=0, 
+                                         UShort_t strip=0, 
+                                         Float_t  edep=0,
+                                         UShort_t count1=0, 
+                                         Short_t  count2=-1, 
+                                         Short_t  count3=-1);
 
   // Digitisation
   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
@@ -101,67 +98,24 @@ public:
   // Raw data 
   virtual        void   Digits2Raw();
 
-  // Set various parameters 
-  void     SetLegLength(Double_t     length=1);
-  void     SetLegRadius(Double_t     radius=.5);
-  void     SetLegOffset(Double_t     offset=.5);
-  void     SetModuleSpacing(Double_t spacing=1);
-
-  // Get various parameters
-  Int_t    GetSiId() const                 { return (*fIdtmed)[kSiId]; }
-  Int_t    GetAirId() const                { return (*fIdtmed)[kAirId]; }
-  Int_t    GetPlasticId() const            { return (*fIdtmed)[kPlasticId]; }
-  Int_t    GetPcbId() const                { return (*fIdtmed)[kPcbId]; }
-  Int_t    GetKaptionId() const            { return (*fIdtmed)[kKaptionId]; }
-  Int_t    GetCarbonId() const             { return (*fIdtmed)[kCarbonId]; }
-  Int_t    GetPrintboardRotationId() const { return fPrintboardRotationId; }
-  Int_t    GetShortLegId() const          { return fShortLegId; }
-  Int_t    GetLongLegId() const                   { return fLongLegId; }
-  Double_t GetLegLength() const                   { return fLegLength; }
-  Double_t GetLegRadius() const                   { return fLegRadius; }
-  Double_t GetModuleSpacing() const       { return fModuleSpacing; }  
-
   // Utility
   void   Browse(TBrowser* b);
-  Float_t GetSiDensity() const { return fSiDensity; }
-  enum { 
-    kBaseDDL = 0x1000 // DDL offset for the FMD
-  };
 protected:
-  enum {
-    kSiId,                 // ID of Si medium
-    kAirId,                // ID of Air medium
-    kPlasticId,            // ID of Plastic medium
-    kPcbId,                // ID of PCB medium
-    kSiChipId,             // ID of Si Chip medium
-    kKaptionId,            // ID of Kaption medium
-    kCarbonId              // ID of Carbon medium
-  };
-
-  void    SetSiDensity(Float_t r=2.33) { fSiDensity = r; }
   TClonesArray*      HitsArray();
   TClonesArray*      DigitsArray();
   TClonesArray*      SDigitsArray();
-  
-  AliFMDRing*        fInner;        // Inner ring structure
-  AliFMDRing*        fOuter;        // Outer ring structure  
-  AliFMDSubDetector* fFMD1;         // FMD1 structure
-  AliFMDSubDetector* fFMD2;         // FMD2 structure  
-  AliFMDSubDetector* fFMD3;         // FMD3 structure
 
-  TClonesArray*      fSDigits;
-  Int_t              fNsdigits;
+  TClonesArray*      fSDigits;              // Summable digits
+  Int_t              fNsdigits;             // Number of digits  
+  Bool_t             fDetailed;             // Use detailed geometry
+  Bool_t             fUseOld;               // Use old approx geometry
+  Bool_t             fUseDivided;           // Use divided volumes
+  Bool_t             fUseAssembly;          // Use divided volumes
+  Bool_t             fUseGeo;               // Allow use of TGeo impl.
   
-  Float_t    fSiDensity;            // Density of Silicon
-  Int_t      fPrintboardRotationId; // ID of Rotation of print bard
-  Int_t      fIdentityRotationId;   // ID of identity matrix 
-  Int_t      fShortLegId;           // ID short leg volume
-  Int_t      fLongLegId;            // ID long leg volume  
-  Double_t   fLegLength;            // Leg length
-  Double_t   fLegRadius;            // Leg radius
-  Double_t   fModuleSpacing;        // Staggering offset 
+  AliFMDSimulator*   fSimulator;            // Simulator task
   
-  ClassDef(AliFMD,8)     // Base class FMD entry point
+  ClassDef(AliFMD,10)     // Base class FMD entry point
 };
 
 #endif