#ifndef ALIFMDSIMULATOR_H #define ALIFMDSIMULATOR_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights * reserved. * * Latest changes by Christian Holm Christensen * * See cxx source for full Copyright notice */ #ifndef TTask # include #endif #ifndef TLorentzVector # include #endif class TVector3; class AliFMD; class AliFMDRing; class AliFMDDetector; class AliFMD1; class AliFMD2; class AliFMD3; /** Simulation of the FMD. This class builds the geometry, and processes hits in the FMD */ class AliFMDSimulator : public TTask { public: AliFMDSimulator(); /** CTOR */ AliFMDSimulator(AliFMD* fmd, Bool_t detailed=kTRUE); virtual ~AliFMDSimulator() {} /** Initialize */ virtual void DefineMaterials(); /** Register */ virtual void DefineGeometry() = 0; /** Deal with a hit in the FMD */ virtual void Exec(Option_t* option=""); protected: AliFMD* fFMD; //! Pointer to module Bool_t fDetailed; // Whether to make a detailed simulation Int_t fInnerId; //! ID of inner ring strips Int_t fOuterId; //! ID of outer ring strips TLorentzVector fCurrentV; //! Current hit postition TLorentzVector fCurrentP; //! Current hit momentum Int_t fCurrentPdg; //! Current hit particle code Double_t fCurrentDeltaE; //! Current hit energy loss static const Char_t* fgkActiveName; // Name of Active volumes static const Char_t* fgkSectorName; // Name of Sector volumes static const Char_t* fgkStripName; // Name of Strip volumes static const Char_t* fgkModuleName; // Name of Module volumes static const Char_t* fgkPCBName; // Name of PCB volumes static const Char_t* fgkLongLegName; // Name of LongLeg volumes static const Char_t* fgkShortLegName; // Name of ShortLeg volumes static const Char_t* fgkFrontVName; // Name of Front volumes static const Char_t* fgkBackVName; // Name of Back volumes static const Char_t* fgkRingName; // Name of Ring volumes static const Char_t* fgkTopHCName; // Name of TopHC volumes static const Char_t* fgkBotHCName; // Name of BotHC volumes static const Char_t* fgkTopIHCName; // Name of TopIHC volumes static const Char_t* fgkBotIHCName; // Name of BotIHC volumes static const Char_t* fgkNoseName; // Name of Nose volumes static const Char_t* fgkBackName; // Name of Back volumes static const Char_t* fgkBeamName; // Name of Beam volumes static const Char_t* fgkFlangeName; // Name of Flange volumes enum { kSiId, // ID index of Si medium kAirId, // ID index of Air medium kPlasticId, // ID index of Plastic medium kPcbId, // ID index of PCB medium kSiChipId, // ID index of Si Chip medium kAlId, // ID index of Al medium kCarbonId // ID index of Carbon medium }; Int_t fSectorOff; // Sector offset in volume tree Int_t fModuleOff; // Module offset in volume tree Int_t fRingOff; // Ring offset in the volume tree Int_t fDetectorOff; // Detector offfset in the volume tree ClassDef(AliFMDSimulator,0) // Simulation class for the FMD }; #endif //____________________________________________________________________ // // Local Variables: // mode: C++ // End: // // EOF //