X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=MUON%2FAliMUON.h;h=28ff0a05beb4d3696e4ac7a08a0229a44f3940ba;hp=3e30deeadadf9eed58883b8adf73bf361f8ba546;hb=18b6b8c74df2512725e952325ba59354d18c5d85;hpb=a100128303cc324e912a7510ab1b14a265e67cf1 diff --git a/MUON/AliMUON.h b/MUON/AliMUON.h index 3e30deeadad..28ff0a05beb 100644 --- a/MUON/AliMUON.h +++ b/MUON/AliMUON.h @@ -4,173 +4,172 @@ * See cxx source for full Copyright notice */ /* $Id$ */ +// Revision of includes 07/05/2004 + +/// \ingroup base +/// \class AliMUON +/// \brief AliDetector class for MUON subsystem providing +/// simulation data management + + +#include -//////////////////////////////////////////////// -// Manager and hits classes for set:MUON // -//////////////////////////////////////////////// #include "AliDetector.h" -#include "AliMUONTriggerCircuit.h" // cp +#include "AliMUONData.h" +#include "AliMUONChamber.h" +#include "AliMUONTrigger.h" + +#include + +class TFile; +class TTree; -class AliMUONChamber; -class AliMUONLocalTrigger; -class AliMUONGlobalTrigger; +class AliLoader; class AliMUONTriggerCircuit; -class AliMUONTriggerDecision; -class AliMUONSegmentation; +class AliMUONTriggerCircuitNew; +class AliMUONData; class AliMUONResponse; +class AliMUONSegmentation; class AliMUONHit; -class AliMUONPadHit; class AliMUONRawCluster; -class AliMUONClusterFinderVS; -class AliMUONReconstHit; -class TVector; -class TObjArray; -class TFile; -class TTree; - - -class AliMUON : public AliDetector { - public: +class AliMUONGeometry; +class AliMUONGeometryTransformer; +class AliMUONGeometryBuilder; +class AliMUONRawWriter; +class AliMUONVGeometryBuilder; +class AliESD; + +class AliMUON : public AliDetector +{ + public: AliMUON(); - AliMUON(const char *name, const char *title); - AliMUON(const AliMUON& rMUON); - virtual ~AliMUON(); - virtual void AddHit(Int_t track , Int_t *vol, Float_t *hits); - virtual void AddPadHit(Int_t* clhits); - virtual void AddDigits(Int_t id, Int_t* tracks, Int_t* charges, - Int_t* digits); - virtual void AddRawCluster(Int_t id, const AliMUONRawCluster& clust); + AliMUON(const char* name, const char *title="FactoryV4", + const char* sDigitizerType="sdigitizer:AliMUONSDigitizerV2", + const char* digitizerType="digitizer:NewDigitizerWithNoiseOldTrigger"); + virtual ~AliMUON(); + + // Geometry + void AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder); + void ResetGeometryBuilder(); + virtual void BuildGeometry(); - void AddGlobalTrigger(Int_t *singlePlus, Int_t *singleMinus, - Int_t *singleUndef, Int_t *pairUnlike, - Int_t *pairLike); - void AddLocalTrigger(Int_t* ltrigger); - Int_t DistancetoPrimitive(Int_t px, Int_t py); - virtual Int_t IsVersion() const {return 0;} - TClonesArray *PadHits() {return fPadHits;} - TClonesArray *LocalTrigger() {return fLocalTrigger;} - TClonesArray *GlobalTrigger() {return fGlobalTrigger;} - virtual void MakeBranch(Option_t *opt=" "); - void SetTreeAddress(); - virtual void ResetHits(); - virtual void ResetDigits(); - virtual void ResetTrigger(); - virtual void ResetRawClusters(); - // Cluster Finding - virtual void FindClusters(Int_t event ,Int_t lastEntry); + virtual Int_t IsVersion() const {return 0;} + + AliMUONGeometryBuilder* GetGeometryBuilder() const {return fGeometryBuilder;} + const AliMUONGeometryTransformer* GetGeometryTransformer() const; + AliMUONSegmentation* GetSegmentation() const { return fSegmentation; } + + // MUONData + AliMUONData* GetMUONData() {return fMUONData;} + + // 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;} + // Digitisation - virtual void Digitise(Int_t nev,Int_t bgrEvent, Option_t *opt1=" ", - Option_t *opt2=" ",Text_t *name=" "); - virtual void SortTracks(Int_t *tracks,Int_t *charges, Int_t ntr); -// 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); - virtual void SetPadSize(Int_t id, Int_t isec, Float_t p1, Float_t p2); -// Set Signal Generation Parameters + virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const; + virtual void SDigits2Digits(); + virtual void Hits2SDigits(); + virtual void Digits2Raw(); + + // Trigger + virtual AliTriggerDetector* CreateTriggerDetector() const + { return new AliMUONTrigger(); } + + + // Configuration Methods (per station id) + // + // 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, - AliMUONSegmentation *segmentation); + // Set Response Model virtual void SetResponseModel(Int_t id, AliMUONResponse *response); - virtual void SetNsec(Int_t id, Int_t nsec); -// Set Reconstruction Model - virtual void SetReconstructionModel(Int_t id, AliMUONClusterFinderVS *reconstruction); -// Set Stepping Parameters + + // Set Stepping Parameters virtual void SetMaxStepGas(Float_t p1); virtual void SetMaxStepAlu(Float_t p1); virtual void SetMaxDestepGas(Float_t p1); virtual void SetMaxDestepAlu(Float_t p1); - virtual void SetMuonAcc(Bool_t acc=0, Float_t angmin=2, Float_t angmax=9); -// Response Simulation - virtual void MakePadHits(Float_t xhit,Float_t yhit, Float_t zhit, - Float_t eloss, Float_t tof, Int_t id); -// get Trigger answer - void Trigger(Int_t nev); -// Return reference to Chamber #id + + // Get Stepping Parameters + virtual Float_t GetMaxStepGas() const; + virtual Float_t GetMaxStepAlu() const; + virtual Float_t GetMaxDestepGas() const; + virtual Float_t GetMaxDestepAlu() const; + + // Set alignement option + 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;} + + // Return reference to Chamber #id virtual AliMUONChamber& Chamber(Int_t id) - {return *((AliMUONChamber *) (*fChambers)[id]);} -// Return reference to Circuit #id + {return *((AliMUONChamber *) (*fChambers)[id]);} + // Return reference to Circuit #id virtual AliMUONTriggerCircuit& TriggerCircuit(Int_t id) {return *((AliMUONTriggerCircuit *) (*fTriggerCircuits)[id]);} -// Retrieve pad hits for a given Hit - virtual AliMUONPadHit* FirstPad(AliMUONHit *hit, TClonesArray *padHits); - virtual AliMUONPadHit* NextPad(TClonesArray *padHits); -// Return pointers to digits - TObjArray *Dchambers() {return fDchambers;} - Int_t *Ndch() {return fNdch;} - virtual TClonesArray *DigitsAddress(Int_t id) - {return ((TClonesArray *) (*fDchambers)[id]);} -// Return pointers to reconstructed clusters - TObjArray *RawClusters() {return fRawClusters;} - Int_t *Nrawch() {return fNrawch;} - virtual TClonesArray *RawClustAddress(Int_t id) - {return ((TClonesArray *) (*fRawClusters)[id]);} - + virtual AliMUONTriggerCircuitNew& TriggerCircuitNew(Int_t id) + {return *((AliMUONTriggerCircuitNew*) (*fTriggerCircuitsNew)[id]);} + // Return pointers to digits AliMUONRawCluster *RawCluster(Int_t ichamber, Int_t icathod, Int_t icluster); -// Copy Operator + // Inherited and overridden from AliModule: + //PH virtual void RemapTrackHitIDs(Int_t * map); + + TString SDigitizerType() const; + TString DigitizerType() const; + + protected: + AliMUON(const AliMUON& rMUON); 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 + TObjArray* fTriggerCircuitsNew; ///< List of Trigger Circuits + AliMUONGeometryBuilder* fGeometryBuilder; ///< Geometry builder + AliMUONSegmentation* fSegmentation; ///< New segmentation + + // + Bool_t fAccCut; ///