AliFMD.h

Go to the documentation of this file.
00001 #ifndef ALIFMD_H
00002 #define ALIFMD_H
00003 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
00004  * reserved. 
00005  *
00006  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
00007  *
00008  * See cxx source for full Copyright notice                               
00009  */
00201 //____________________________________________________________________
00202 //
00203 //  Manager class for the FMD - Base class.
00204 //  AliFMDv1, AliFMDv0, and AliFMDAlla 
00205 //  provides concrete implementations. 
00206 //  This class is sooooo crowded
00207 //
00208 #ifndef ALIDETECTOR_H  
00209 # include <AliDetector.h>
00210 #endif
00211 #ifndef ROOT_TBranch
00212 # include <TBranch.h>
00213 #endif
00214 class TBranch;
00215 class TClonesArray;
00216 class TBrowser;
00217 class TMarker3DBox;
00218 class AliDigitizer;
00219 class AliFMDHit;
00220 
00221 //____________________________________________________________________
00280 class AliFMD : public AliDetector 
00281 {
00282 public:
00284   AliFMD();
00288   AliFMD(const char *name, const char *title);
00291   AliFMD(const AliFMD& other);
00293   virtual ~AliFMD(); 
00297   AliFMD& operator=(const AliFMD& other);
00300   void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; }
00301   
00307   virtual void   CreateGeometry();
00321   virtual void   CreateMaterials(); 
00323   virtual void   Init();
00329   virtual void   StepManager() = 0;
00332   virtual void   FinishEvent();
00339   virtual        void   BuildGeometry();
00342   virtual        void   DrawDetector();
00345   virtual        Int_t  DistanceToPrimitive(Int_t px, Int_t py);
00352   virtual        void   LoadPoints(Int_t track);
00357   /* Create Tree branches for the FMD.
00358      @param opt  One of 
00359      - @c H Make a branch of TClonesArray of AliFMDHit's
00360      - @c D Make a branch of TClonesArray of AliFMDDigit's
00361      - @c S Make a branch of TClonesArray of AliFMDSDigit's */
00362   virtual void          MakeBranch(Option_t *opt=" ");
00365   virtual void          SetHitsAddressBranch(TBranch *b);
00367   virtual void          SetTreeAddress();
00370   virtual TClonesArray* SDigits() { return fSDigits; }        
00372   virtual void          ResetSDigits();
00390   virtual void          AddHit(Int_t track, Int_t *vol, Float_t *hits);
00408   virtual AliFMDHit*    AddHitByFields(Int_t    track, 
00409                                        UShort_t detector, 
00410                                        Char_t   ring, 
00411                                        UShort_t sector, 
00412                                        UShort_t strip, 
00413                                        Float_t  x=0,
00414                                        Float_t  y=0, 
00415                                        Float_t  z=0,
00416                                        Float_t  px=0, 
00417                                        Float_t  py=0, 
00418                                        Float_t  pz=0,
00419                                        Float_t  edep=0,
00420                                        Int_t    pdg=0,
00421                                        Float_t  t=0, 
00422                                        Float_t  len=0, 
00423                                        Bool_t   stopped=kFALSE);
00434   virtual        void   AddDigit(Int_t *digits, Int_t* notused=0);
00443   virtual        void   AddDigitByFields(UShort_t detector=0, 
00444                                          Char_t   ring='\0', 
00445                                          UShort_t sector=0, 
00446                                          UShort_t strip=0, 
00447                                          UShort_t count1=0, 
00448                                          Short_t  count2=-1, 
00449                                          Short_t  count3=-1);
00459   virtual        void   AddSDigit(Int_t *digits);
00469   virtual        void   AddSDigitByFields(UShort_t detector=0, 
00470                                           Char_t   ring='\0', 
00471                                           UShort_t sector=0, 
00472                                           UShort_t strip=0, 
00473                                           Float_t  edep=0,
00474                                           UShort_t count1=0, 
00475                                           Short_t  count2=-1, 
00476                                           Short_t  count3=-1);
00484   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
00487   virtual        void   Hits2Digits();
00490   virtual        void   Hits2SDigits();
00498   virtual        void   Digits2Raw();
00505   void   Browse(TBrowser* b);
00507 protected:
00510   TClonesArray*      HitsArray();
00513   TClonesArray*      DigitsArray();
00517   TClonesArray*      SDigitsArray();
00518 
00519   TClonesArray*      fSDigits;              // Summable digits
00520   Int_t              fNsdigits;             // Number of digits  
00521   Bool_t             fDetailed;             // Use detailed geometry
00522   Bool_t             fUseOld;               // Use old approx geometry
00523   Bool_t             fUseAssembly;          // Use divided volumes
00524   
00525   enum {
00526     kSiId,                 // ID index of Si medium
00527     kAirId,                // ID index of Air medium
00528     kPlasticId,            // ID index of Plastic medium
00529     kPcbId,                // ID index of PCB medium
00530     kSiChipId,             // ID index of Si Chip medium
00531     kAlId,                 // ID index of Al medium
00532     kCarbonId,             // ID index of Carbon medium
00533     kCopperId,             // ID index of Copper Medium
00534     kKaptonId              // ID index of Kapton Medium
00535   };  
00536 
00537   TObjArray*         fBad;                  
00538   
00539   ClassDef(AliFMD,11)     // Base class FMD entry point
00540 };
00541 
00542 #endif
00543 //____________________________________________________________________
00544 //
00545 // Local Variables:
00546 //   mode: C++
00547 // End:
00548 //
00549 // EOF
00550 //

Generated on Fri Mar 24 17:11:21 2006 for ALICE FMD Off-line by  doxygen 1.4.6