00001 #ifndef ALIFMD_H
00002 #define ALIFMD_H
00003
00004
00005
00006
00007
00008
00009
00201
00202
00203
00204
00205
00206
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
00358
00359
00360
00361
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;
00520 Int_t fNsdigits;
00521 Bool_t fDetailed;
00522 Bool_t fUseOld;
00523 Bool_t fUseAssembly;
00524
00525 enum {
00526 kSiId,
00527 kAirId,
00528 kPlasticId,
00529 kPcbId,
00530 kSiChipId,
00531 kAlId,
00532 kCarbonId,
00533 kCopperId,
00534 kKaptonId
00535 };
00536
00537 TObjArray* fBad;
00538
00539 ClassDef(AliFMD,11)
00540 };
00541
00542 #endif
00543
00544
00545
00546
00547
00548
00549
00550