#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
+//