]> 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 311a3b9c51aea3723ddb121eff5282272f987f05..12df6363dc8247e84118dc4423f7a5b2d0d757f7 100644 (file)
 #ifndef ALIFMD_H
 #define ALIFMD_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-////////////////////////////////////////////////
-//  Manager and hits classes for set:Si-FMD     //
-////////////////////////////////////////////////
-#include "AliDetector.h"
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
+ * reserved. 
+ *
+ * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
+ *
+ * See cxx source for full Copyright notice                               
+ */
 
+//____________________________________________________________________
+//
+//  Manager class for the FMD - Base class.
+//
+#ifndef ALIDETECTOR_H 
+# include <AliDetector.h>
+#endif
+#ifndef ROOT_TBranch
+# include <TBranch.h>
+#endif
+class TBranch;
 class TClonesArray;
-class AliFMD : public AliDetector {
+class TBrowser;
+class AliDigitizer;
+class AliFMDSimulator;
+
+//____________________________________________________________________
+class AliFMD : public AliDetector 
+{
 public:
   AliFMD();
   AliFMD(const char *name, const char *title);
-  virtual       ~AliFMD(); 
-  virtual void   AddHit(Int_t track, Int_t * vol, Float_t * hits);
-  virtual void   AddDigit(Int_t* digits);
-  virtual void   BuildGeometry();
-  virtual void   CreateGeometry() {}
-  virtual void   CreateMaterials()=0; 
-  virtual Int_t  DistanceToPrimitive(Int_t px, Int_t py);
-  virtual Int_t  IsVersion() const =0;
-  virtual void   Init();
-  virtual void   MakeBranch(Option_t *opt=" ",const char *file=0);
-  virtual void   MakeBranchInTreeD(TTree *treeD, const char *file=0);
-  virtual void   SetTreeAddress();
-  virtual void   ResetHits();
-  virtual void   ResetDigits();
-  virtual void   DrawDetector()=0;
-  virtual void   StepManager() {}
-   // Granularity
-  virtual void SetRingsSi1(Int_t ringsSi1=256);
-  virtual void SetSectorsSi1(Int_t sectorsSi1=20);
-  virtual void SetRingsSi2(Int_t ringsSi2=128);
-  virtual void SetSectorsSi2(Int_t sectorsSi2=40);
-   
-  void SetEventNumber(Int_t i)     {fEvNrSig = i;}
-  void  Eta2Radius(Float_t eta, Float_t zDisk, Float_t * radius);
-  void Digits2Reco(); 
-  virtual void SetHitsAddressBranch(TBranch *b){b->SetAddress(&fHits);}
+  AliFMD(const AliFMD& other);
+  virtual ~AliFMD(); 
+  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; }
   
-   // Digitisation
-  TClonesArray *ReconParticles() const {return fReconParticles;}   
+  
+  // GEometry ANd Tracking (GEANT :-)
+  virtual void   CreateGeometry();
+  virtual void   CreateMaterials(); 
+  virtual void   Init();
+  virtual void   StepManager() = 0;
 
- protected:
-  Int_t fIdSens1;     //Si sensetive volume
-  Int_t fIdSens2;     //Si sensetive volume
-  Int_t fIdSens3;     //Si sensetive volume
-  Int_t fIdSens4;     //Si sensetive volume
-  Int_t fIdSens5;     //Si sensetive volume
- //Granularity
-  Int_t fRingsSi1;       // Number of rings
-  Int_t fSectorsSi1;    // Number of sectors
-  Int_t fRingsSi2;       // Number of rings
-  Int_t fSectorsSi2;    // Number of sectors
+  // Graphics and event display 
+  virtual        void   BuildGeometry();
+  virtual        void   DrawDetector();
+  virtual        Int_t  DistanceToPrimitive(Int_t px, Int_t py);
 
-  Int_t   fNevents ;        // Number of events to digitize
-  Int_t fEvNrSig;                 // signal     event number
+  // Hit and digit management 
+  virtual void          MakeBranch(Option_t *opt=" ");
+  virtual void          SetHitsAddressBranch(TBranch *b);
+  virtual void          SetTreeAddress();
+  virtual TClonesArray* SDigits() { return fSDigits; }        
+  virtual void          ResetSDigits();
+  virtual void          AddHit(Int_t track, Int_t *vol, Float_t *hits);
+  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   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);
 
-  TClonesArray *fReconParticles; // list of reconstructed particles
+  // Digitisation
+  virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
+  virtual        void   Hits2Digits();
+  virtual        void   Hits2SDigits();
 
- ClassDef(AliFMD,4)  //Class for the FMD detector
-};
-#endif // AliFMD_H
+  // Raw data 
+  virtual        void   Digits2Raw();
+
+  // Utility
+  void   Browse(TBrowser* b);
+protected:
+  TClonesArray*      HitsArray();
+  TClonesArray*      DigitsArray();
+  TClonesArray*      SDigitsArray();
 
+  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.
+  
+  AliFMDSimulator*   fSimulator;            // Simulator task
+  
+  ClassDef(AliFMD,10)     // Base class FMD entry point
+};
 
+#endif
+//____________________________________________________________________
+//
+// Local Variables:
+//   mode: C++
+// End:
+//
+// EOF
+//