X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONResponseV0.h;h=5651f4a7f2ed62ae5c0e6aa8eca668fc88e3adc5;hb=aa16ad3c27ea2999120d1a95f79163bf3d927e2a;hp=cc55a7dfcc5330ee1dddf6a4a3cfe4f266c88fa8;hpb=ba030c0ecc4b8c2ce77d97f0759aacb6edb0e7d2;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONResponseV0.h b/MUON/AliMUONResponseV0.h index cc55a7dfcc5..5651f4a7f2e 100644 --- a/MUON/AliMUONResponseV0.h +++ b/MUON/AliMUONResponseV0.h @@ -4,92 +4,119 @@ * See cxx source for full Copyright notice */ /* $Id$ */ +// Revision of includes 07/05/2004 + +/// \ingroup sim +/// \class AliMUONResponseV0 +/// \brief Implementation of Mathieson response #include "AliMUONResponse.h" +#include "AliMUONMathieson.h" -class AliMUONResponseV0 : -public AliMUONResponse { +class AliMUONResponseV0 : public AliMUONResponse +{ public: - AliMUONResponseV0(){fChargeCorrel = 0;} // by default - virtual ~AliMUONResponseV0(){} - // + AliMUONResponseV0(); + AliMUONResponseV0(const AliMUONResponseV0& rhs); + AliMUONResponseV0& operator = (const AliMUONResponseV0& rhs); + virtual ~AliMUONResponseV0(); + + // // Configuration methods // - // Set number of sigmas over which cluster didintegration is performed + /// Set number of sigmas over which cluster didintegration is performed virtual void SetSigmaIntegration(Float_t p1) {fSigmaIntegration=p1;} - // Get number of sigmas over which cluster didintegration is performed - virtual Float_t SigmaIntegration() {return fSigmaIntegration;} - // Set single electron pulse height (ADCcounts/e) + /// Get number of sigmas over which cluster didintegration is performed + virtual Float_t SigmaIntegration() const {return fSigmaIntegration;} + /// Set single electron pulse height (ADCcounts/e) virtual void SetChargeSlope(Float_t p1) {fChargeSlope=p1;} - // Get Set single electron pulse height (ADCcounts/e) - virtual Float_t ChargeSlope() {return fChargeSlope;} - // Set sigmas of the charge spread function + /// Get Set single electron pulse height (ADCcounts/e) + virtual Float_t ChargeSlope() const {return fChargeSlope;} + /// Set sigmas of the charge spread function virtual void SetChargeSpread(Float_t p1, Float_t p2) {fChargeSpreadX=p1; fChargeSpreadY=p2;} - // Get sigma_X of the charge spread function - virtual Float_t ChargeSpreadX() {return fChargeSpreadX;} - // Get sigma_Y of the charge spread function - virtual Float_t ChargeSpreadY() {return fChargeSpreadY;} - // Set maximum Adc-count value + /// Get sigma_X of the charge spread function + virtual Float_t ChargeSpreadX() const {return fChargeSpreadX;} + /// Get sigma_Y of the charge spread function + virtual Float_t ChargeSpreadY() const {return fChargeSpreadY;} + /// Set maximum Adc-count value virtual void SetMaxAdc(Int_t p1) {fMaxAdc=p1;} - // Set zero suppression threshold + /// Set saturation value + virtual void SetSaturation(Int_t p1) {fSaturation=p1;} + /// Set zero suppression threshold virtual void SetZeroSuppression(Int_t p1) {fZeroSuppression=p1;} - // Get maximum Adc-count value - virtual Int_t MaxAdc() {return fMaxAdc;} - // Get zero suppression threshold - virtual Int_t ZeroSuppression() {return fZeroSuppression;} - // Set anode cathode Pitch - virtual Float_t Pitch() {return fPitch;} - // Get anode cathode Pitch - virtual void SetPitch(Float_t p1) {fPitch=p1;}; - // Set the charge correlation + /// Get maximum Adc-count value + virtual Int_t MaxAdc() const {return fMaxAdc;} + /// Get saturation value + virtual Int_t Saturation() const {return fSaturation;} + + /// Get zero suppression threshold + virtual Int_t ZeroSuppression() const {return fZeroSuppression;} + /// Set the charge correlation virtual void SetChargeCorrel(Float_t correl){fChargeCorrel = correl;} - // Get the charge correlation - virtual Float_t ChargeCorrel(){return fChargeCorrel;} - // Set Mathieson parameters - // Mathieson \sqrt{Kx3} and derived Kx2 and Kx4 - virtual void SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3); - // Mathieson \sqrt{Kx3} - virtual void SetSqrtKx3(Float_t p1) {fSqrtKx3=p1;}; - // Mathieson Kx2 - virtual void SetKx2(Float_t p1) {fKx2=p1;}; - // Mathieson Kx4 - virtual void SetKx4(Float_t p1) {fKx4=p1;}; - // Mathieson \sqrt{Ky3} and derived Ky2 and Ky4 + /// Get the charge correlation + virtual Float_t ChargeCorrel() const {return fChargeCorrel;} + + + /// Set anode cathode Pitch + virtual Float_t Pitch() const {return fMathieson->Pitch();} + /// Get anode cathode Pitch + virtual void SetPitch(Float_t p1) {fMathieson->SetPitch(p1);}; + + /// Set Mathieson parameters + /// Mathieson sqrt{Kx3} and derived Kx2 and Kx4 + /// passing pointer to class Mathieson for backward compatibility + virtual void SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3); + /// Mathieson sqrt{Kx3} + virtual void SetSqrtKx3(Float_t p1) {fMathieson->SetSqrtKx3(p1);}; + /// Mathieson Kx2 + virtual void SetKx2(Float_t p1) {fMathieson->SetKx2(p1);}; + /// Mathieson Kx4 + virtual void SetKx4(Float_t p1) {fMathieson->SetKx4(p1);}; + /// Mathieson sqrt{Ky3} and derived Ky2 and Ky4 virtual void SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3); - // Mathieson \sqrt{Ky3} - virtual void SetSqrtKy3(Float_t p1) {fSqrtKy3=p1;}; - // Mathieson Ky2 - virtual void SetKy2(Float_t p1) {fKy2=p1;}; - // Mathieson Ky4 - virtual void SetKy4(Float_t p1) {fKy4=p1;}; + /// Mathieson sqrt{Ky3} + virtual void SetSqrtKy3(Float_t p1) {fMathieson->SetSqrtKy3(p1);}; + /// Mathieson Ky2 + virtual void SetKy2(Float_t p1) {fMathieson->SetKy2(p1);}; + /// Mathieson Ky4 + virtual void SetKy4(Float_t p1) {fMathieson->SetKy4(p1);}; // // Chamber response methods // Pulse height from scored quantity (eloss) - virtual Float_t IntPH(Float_t eloss); - // Charge disintegration - virtual Float_t IntXY(AliSegmentation * segmentation); - // Noise, zero-suppression, adc saturation - virtual Int_t DigitResponse(Int_t digit, AliMUONTransientDigit* where); - - ClassDef(AliMUONResponseV0,1) // Implementation of Mathieson response - protected: - Float_t fChargeSlope; // Slope of the charge distribution - Float_t fChargeSpreadX; // Width of the charge distribution in x - Float_t fChargeSpreadY; // Width of the charge distribution in y - Float_t fSigmaIntegration; // Number of sigma's used for charge distribution - Int_t fMaxAdc; // Maximum ADC channel - Int_t fZeroSuppression; // Zero suppression threshold - Float_t fChargeCorrel; // amplitude of charge correlation on 2 cathods - // is RMS of ln(q1/q2) - Float_t fSqrtKx3; // Mathieson Sqrt(Kx3) - Float_t fKx2; // Mathieson Kx2 - Float_t fKx4; // Mathieson Kx4 = Kx1/Kx2/Sqrt(Kx3) - Float_t fSqrtKy3; // Mathieson Sqrt(Ky3) - Float_t fKy2; // Mathieson Ky2 - Float_t fKy4; // Mathieson Ky4 = Ky1/Ky2/Sqrt(Ky3) - Float_t fPitch; // anode-cathode pitch + virtual Float_t IntPH(Float_t eloss) const; + + /// Parametrised tail effect in resolution histogram + virtual void SetTailEffect(Bool_t isTail) {fIsTailEffect=isTail;} + + virtual Float_t GetAnod(Float_t x) const; + + virtual void DisIntegrate(const AliMUONHit& hit, TList& digits, Float_t timeDif); + + virtual void Print(Option_t* opt="") const; + +private: + void CopyTo(AliMUONResponseV0& other) const; + +private: + + Float_t fChargeSlope; ///< Slope of the charge distribution + Float_t fChargeSpreadX; ///< Width of the charge distribution in x + Float_t fChargeSpreadY; ///< Width of the charge distribution in y + Float_t fSigmaIntegration; ///< Number of sigma's used for charge distribution + Int_t fMaxAdc; ///< Maximum ADC channel + Int_t fSaturation; ///< Pad saturation in ADC channel + Int_t fZeroSuppression; ///< Zero suppression threshold + Float_t fChargeCorrel; ///< \brief amplitude of charge correlation on 2 cathods + /// is RMS of ln(q1/q2) + AliMUONMathieson* fMathieson; ///< pointer to mathieson fct + Float_t fChargeThreshold; ///< Charges below this threshold are = 0 + Bool_t fIsTailEffect; ///< switch to turn on/off the tail effect + + + ClassDef(AliMUONResponseV0,2) // Implementation of detector response }; + #endif