X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=MUON%2FAliMUON.h;h=ff28fa514c9516136a43bae2c7cb5c410b7e8426;hp=8703ec882e46eeda556458c3fca5be2d7d2c33c7;hb=3e42c3a747530d8225c5935d0d15dc4074a3a424;hpb=ffd9faa290dca4689a4e7394157bb3d19ca317af diff --git a/MUON/AliMUON.h b/MUON/AliMUON.h index 8703ec882e4..ff28fa514c9 100644 --- a/MUON/AliMUON.h +++ b/MUON/AliMUON.h @@ -4,88 +4,81 @@ * See cxx source for full Copyright notice */ /* $Id$ */ -// Revision of includes 07/05/2004 +// Revision of includes 12/01/2009 -//////////////////////////////////////////////// -// AliDetector Class for MUON subsystem // -//////////////////////////////////////////////// - -#include +/// \ingroup sim +/// \class AliMUON +/// \brief AliDetector class for MUON subsystem providing +/// simulation data management + #include "AliDetector.h" -#include "AliMUONData.h" #include "AliMUONChamber.h" +#include "AliMUONTrigger.h" -class TVector; -class TFile; -class TTree; +#include -class AliLoader; -class AliMUONGeometrySegmentation; -class AliMUONTriggerCircuit; -class AliMUONData; class AliMUONResponse; -class AliMUONHit; -class AliMUONRawCluster; -class AliMUONReconstHit; +class AliMUONGeometry; +class AliMUONGeometryTransformer; class AliMUONGeometryBuilder; +class AliMUONRawWriter; class AliMUONVGeometryBuilder; -class AliMUONGeometryDEIndexing; -class AliMUONFactoryV2; -class AliESD; +class AliMUONDigitMaker; +class AliMUONVHitStore; +class AliMUONCalibrationData; + +class AliLoader; + +class TObjArray; class AliMUON : public AliDetector { public: AliMUON(); - AliMUON(const char *name, const char *title); - virtual ~AliMUON(); + AliMUON(const char* name, const char* title); + virtual ~AliMUON(); - void AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder); - virtual void BuildGeometry(); - AliMUONData* GetMUONData() {return fMUONData;} - AliMUONGeometryBuilder* GetGeometryBuilder() {return fGeometryBuilder;} - virtual Int_t IsVersion() const {return 0;} + // Geometry + void AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder); + void ResetGeometryBuilder(); + + + /// Return geometry builder + AliMUONGeometryBuilder* GetGeometryBuilder() const {return fGeometryBuilder;} + const AliMUONGeometryTransformer* GetGeometryTransformer() const; + /// Return segmentation // MUONLoader definition virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type) - // Interface with AliMUONData - virtual void MakeBranch(Option_t *opt=" ") {GetMUONData()->MakeBranch(opt);} - virtual void SetTreeAddress(); - virtual void ResetHits() {GetMUONData()->ResetHits();} - virtual void ResetDigits() {GetMUONData()->ResetDigits();} - virtual void ResetTrigger() {GetMUONData()->ResetTrigger();} - virtual void ResetRawClusters() {GetMUONData()->ResetRawClusters();} - virtual void SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;} + + virtual void SetTreeAddress(); + + /// Set split level for making branches in outfiles + virtual void SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;} // Digitisation virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const; virtual void SDigits2Digits(); virtual void Hits2SDigits(); virtual void Digits2Raw(); + virtual Bool_t Raw2SDigits(AliRawReader* rawReader); + // Trigger + /// Create trigger + virtual AliTriggerDetector* CreateTriggerDetector() const + { return new AliMUONTrigger(); } + // Configuration Methods (per station id) // - // Set Chamber Segmentation Parameters - // id refers to the station and isec to the cathode plane - // Set Z values for all chambers - virtual void SetChambersZ(const Float_t *Z); - virtual void SetChambersZToDefault(void); // Set Signal Generation Parameters virtual void SetSigmaIntegration(Int_t id, Float_t p1); virtual void SetChargeSlope(Int_t id, Float_t p1); virtual void SetChargeSpread(Int_t id, Float_t p1, Float_t p2); virtual void SetMaxAdc(Int_t id, Int_t p1); - // Set Segmentation and Response Model - virtual void SetSegmentationModel(Int_t id, Int_t isec, - AliMUONGeometrySegmentation* segmentation); - - void SetSegmentationType(Int_t type) {fSegmentationType = type;}// 1 for old 2 for new, 0 undefined - Int_t WhichSegmentation() {return fSegmentationType; } - - virtual void SetResponseModel(Int_t id, AliMUONResponse *response); - virtual void SetNsec(Int_t id, Int_t nsec); + // Set Response Model + virtual void SetResponseModel(Int_t id, const AliMUONResponse& response); // Set Stepping Parameters virtual void SetMaxStepGas(Float_t p1); @@ -100,53 +93,93 @@ class AliMUON : public AliDetector virtual Float_t GetMaxDestepAlu() const; // Set alignement option - virtual void SetAlign(Bool_t align); - - // Return reference to Chamber #id + virtual void SetAlign(Bool_t align = true); + virtual void SetAlign(const TString& fileName, Bool_t align = true); + + /// Set scaler event for trigger + virtual void SetTriggerScalerEvent(Bool_t scaler = true){fTriggerScalerEvent = scaler;} + + /// Set trigger response version + virtual void SetTriggerResponseV1(Bool_t trigResV1 = false) + { fTriggerResponseV1 = trigResV1; } + virtual Bool_t GetTriggerResponseV1() const; + /// Set trigger coinc44 + virtual void SetTriggerCoinc44(Int_t trigCoinc44 = 0) + { fTriggerCoinc44 = trigCoinc44; } + virtual Int_t GetTriggerCoinc44() const; + /// Set trigger chamber efficiency by cells + virtual void SetTriggerEffCells(Bool_t trigEffCells = false) + { fTriggerEffCells = trigEffCells; } + virtual Bool_t GetTriggerEffCells() const; + /// Set off generation of noisy digits + virtual void SetDigitizerWithNoise(Int_t digitizerWithNoise) + { fDigitizerWithNoise = digitizerWithNoise; } + virtual Int_t GetDigitizerWithNoise() const; + + /// Parametrised tail effect in resolution histogram + virtual void SetTailEffect(Bool_t isTailEffect) { fIsTailEffect=isTailEffect; } + + // Getters + /// Return reference to Chamber \a id virtual AliMUONChamber& Chamber(Int_t id) {return *((AliMUONChamber *) (*fChambers)[id]);} - // Return reference to Circuit #id - virtual AliMUONTriggerCircuit& TriggerCircuit(Int_t id) - {return *((AliMUONTriggerCircuit *) (*fTriggerCircuits)[id]);} - // Return pointers to digits - AliMUONRawCluster *RawCluster(Int_t ichamber, Int_t icathod, - Int_t icluster); - // Inherited and overridden from AliModule: - //PH virtual void RemapTrackHitIDs(Int_t * map); + virtual void MakeBranch(Option_t* opt=" "); + virtual void ResetHits(); + + /// Set digit store class name + void SetDigitStoreClassName(const char* classname) { fDigitStoreConcreteClassName = classname; } + /// Return digit store class name + const TString DigitStoreClassName() const { return fDigitStoreConcreteClassName; } + protected: + /// Not implemented AliMUON(const AliMUON& rMUON); + /// Not implemented AliMUON& operator = (const AliMUON& rhs); + const AliMUONGeometry* GetGeometry() const; - Int_t fNCh; // Number of chambers - Int_t fNTrackingCh; // Number of tracking chambers* - AliMUONData* fMUONData; // Data container for MUON subsystem - Int_t fSplitLevel; // Splitlevel when making branches in outfiles. - TObjArray* fChambers; // List of Tracking Chambers - TObjArray* fTriggerCircuits; // List of Trigger Circuits - AliMUONGeometryBuilder* fGeometryBuilder; // Geometry builder - Int_t fSegmentationType; // type for segmentation - AliMUONGeometryDEIndexing* fDEIndexing; // Geometry DE indexing + Int_t fNCh; ///< Number of chambers + Int_t fNTrackingCh; ///< Number of tracking chambers* + Int_t fSplitLevel; ///< Splitlevel when making branches in outfiles. + TObjArray* fChambers; ///< List of Tracking Chambers + AliMUONGeometryBuilder* fGeometryBuilder; ///< Geometry builder // - Bool_t fAccCut; //Transport acceptance cut - Float_t fAccMin; //Minimum acceptance cut used during transport - Float_t fAccMax; //Minimum acceptance cut used during transport + Bool_t fAccCut; ///< Transport acceptance cut + Float_t fAccMin; ///< Minimum acceptance cut used during transport + Float_t fAccMax; ///< Minimum acceptance cut used during transport // // Stepping Parameters - Float_t fMaxStepGas; // Maximum step size inside the chamber gas - Float_t fMaxStepAlu; // Maximum step size inside the chamber aluminum - Float_t fMaxDestepGas; // Maximum relative energy loss in gas - Float_t fMaxDestepAlu; // Maximum relative energy loss in aluminum + Float_t fMaxStepGas; ///< Maximum step size inside the chamber gas + Float_t fMaxStepAlu; ///< Maximum step size inside the chamber aluminum + Float_t fMaxDestepGas; ///< Maximum relative energy loss in gas + Float_t fMaxDestepAlu; ///< Maximum relative energy loss in aluminum // Pad Iterator - Int_t fMaxIterPad; // Maximum pad index - Int_t fCurIterPad; // Current pad index - // Background eent for event mixing - AliMUONFactoryV2* fFactory; // ! MUON factory + Int_t fMaxIterPad; ///< Maximum pad index + Int_t fCurIterPad; ///< Current pad index + + // Options + Bool_t fTriggerScalerEvent; ///< Flag to generates scaler event + Bool_t fTriggerResponseV1; ///< Flag to select TriggerResponseV1 + Int_t fTriggerCoinc44; ///< Flag to select TriggerCoinc44 + Bool_t fTriggerEffCells; ///< Flag to select TriggerEffCells + Int_t fDigitizerWithNoise; ///< Flag to switch on/off generation of noisy digits + Bool_t fIsTailEffect; ///< Switch to turn on/off the tail effect + + AliMUONRawWriter* fRawWriter; //!< Raw data writer + + AliMUONDigitMaker* fDigitMaker; //!< pointer to the digit maker class + + AliMUONVHitStore* fHitStore; //!< container of hits + + TString fDigitStoreConcreteClassName; ///< to be able to select what the sdigitizer uses + + AliMUONCalibrationData* fCalibrationData; ///< pointer of calibration data - ClassDef(AliMUON,8) // MUON Detector base class + ClassDef(AliMUON,17) // MUON Detector base class }; #endif