43 #include "Riostream.h"
59 void Global2Local(Int_t detElemId, Double_t xg, Double_t yg, Double_t zg,
60 Double_t& xl, Double_t& yl, Double_t& zl)
78 fSigmaIntegration(0.0),
84 fChargeThreshold(1e-4),
88 AliDebug(1,Form(
"Default ctor"));
97 fSigmaIntegration(0.0),
103 fChargeThreshold(1e-4),
104 fIsTailEffect(kFALSE)
183 nel= Int_t(eloss*1.e9/27.4);
186 for (Int_t i=1;i<=nel;i++) {
188 while(!arg) arg = gRandom->Rndm();
200 Int_t n = Int_t(x/
Pitch());
201 Float_t wire = (x>0) ? n+0.5 : n-0.5;
217 Double_t hitX = hit.X() ;
218 Double_t hitY = hit.Y() ;
219 Double_t hitZ = hit.Z() ;
227 Double_t locX,locY,locZ,globXCenter,globYCenter,globZ;
229 Double_t termA = 1.0;
230 Double_t termB = 1.0;
247 transformer->
Local2Global(detElemId,locXCenter,locYCenter,locZ,globXCenter,globYCenter,globZ);
248 for(Int_t itime = 0; itime<para; itime++)
251 for(Int_t itime = 0; itime<Int_t((2*para) + 1); itime++)
252 termB *= (hitY - globYCenter) ;
254 hitY = hitY + termA*termB;
280 Float_t currentCorrel = TMath::Exp(gRandom->Gaus(0.0,
ChargeCorrel()/2.0));
284 Float_t qcath = qtot * ( cath == 0 ? currentCorrel : 1.0/currentCorrel);
295 AliError(Form(
"Could not get iterator for detElemId %d",detElemId));
309 AliDebug(1, Form(
"Got an invalid iterator bug (area.Position() is within "
310 " DE but the iterator is void) for detElemId %d cath %d",
315 AliDebug(1, Form(
"Got an invalid iterator bug for detElemId %d cath %d."
316 "Might be a bad hit ? area.Position()=(%e,%e) "
317 "Dimensions()=(%e,%e)",
334 upperRight.X(),upperRight.Y()));
virtual Float_t ChargeSpreadX() const
Get sigma_X of the charge spread function.
virtual Float_t Pitch() const
Set anode cathode Pitch.
const AliMpVSegmentation * GetMpSegmentation(Int_t detElemId, AliMp::CathodType cath, Bool_t warn=true) const
void SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3)
Mathieson sqrt{Kx3} and derived Kx2 and Kx4.
Double_t GetDimensionY() const
Return y dimensions.
Float_t IntXY(Float_t xi1, Float_t yi1, Float_t xi2, Float_t yi2) const
Charge integration on region (x1,y1,x2,y2).
Double_t GetPositionY() const
Return y position.
virtual AliMp::PlaneType PlaneType() const =0
Return the plane type.
static AliMpSegmentation * Instance(Bool_t warn=true)
Float_t Eloss() const
Return Ionisation energy loss in gas.
Int_t fZeroSuppression
Zero suppression threshold.
Float_t fChargeSpreadY
Width of the charge distribution in y.
virtual Float_t ChargeSpreadY() const
Get sigma_Y of the charge spread function.
Implementation of Mathieson response.
void Global2Local(Int_t detElemId, Double_t xg, Double_t yg, Double_t zg, Double_t &xl, Double_t &yl, Double_t &zl)
Float_t fChargeThreshold
Charges below this threshold are = 0.
A rectangle area positioned in plane..
AliDetector class for MUON subsystem providing simulation data management.
virtual void SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3)
Mathieson sqrt{Ky3} and derived Ky2 and Ky4.
virtual Bool_t IsDone() const =0
Is iterator done.
static Float_t DefaultA0()
static Float_t ReducedQTot(Float_t qtot, Float_t timeDif)
Return a reduced total charge.
Float_t fChargeSpreadX
Width of the charge distribution in x.
Int_t fSaturation
Pad saturation in ADC channel.
Int_t GetManuChannel() const
virtual ~AliMUONResponseV0()
virtual Float_t ChargeCorrel() const
Get the charge correlation.
Float_t fChargeCorrel
amplitude of charge correlation on 2 cathods is RMS of ln(q1/q2)
Float_t fSigmaIntegration
Number of sigma's used for charge distribution.
virtual void Print(Option_t *opt="") const
virtual void SetPadXY(Int_t padx, Int_t pady)
Set pad number along x.
virtual Float_t GetAnod(Float_t x) const
AliMUONMathieson * fMathieson
pointer to mathieson fct
void CopyTo(AliMUONResponseV0 &other) const
Double_t GetDimensionX() const
Return x dimensions.
virtual void Next()=0
Set iterator to the next pad.
Float_t fChargeSlope
Slope of the charge distribution.
An interface for an iterator over pads.
Double_t GetPositionY() const
Return the pad x position (in cm)
Bool_t fIsTailEffect
switch to turn on/off the tail effect
static Float_t DefaultCapa()
Int_t fMaxAdc
Maximum ADC channel.
const AliMUONGeometryTransformer * GetGeometryTransformer() const
static Float_t DefaultADC2MV()
virtual void SetCharge(Float_t q)
Set charge.
AliMp::CathodType GetCathodType(Int_t cathodNumber)
Convert integer number in enum;.
Implementation of Mathieson response.
Double_t GetPositionX() const
Return x position.
virtual AliMpPad CurrentItem() const =0
Return current pad.
Int_t DetElemId() const
Return detection element ID.
virtual void SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3)
Bool_t IsValid() const
Return validity.
virtual AliMpPad PadByPosition(Double_t x, Double_t y, Bool_t warning=true) const =0
Find pad by position.
Chamber response base class.
The abstract base class for the segmentation.
virtual Float_t IntPH(Float_t eloss) const
Pulse height from scored quantity (eloss) (dummy)
Double_t GetDimensionY() const
Return the y pad dimension - half length (in cm)
virtual void DisIntegrate(const AliMUONHit &hit, TList &digits, Float_t timeDif)
virtual void First()=0
Set iterator to the first pad.
Class which encapsuate all information about a pad.
Double_t GetPositionX() const
Return the pad x position (in cm)
Double_t GetDimensionX() const
Return the x pad dimension - half length (in cm)
void SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3)
Mathieson sqrt{Ky3} and derived Ky2 and Ky4.
virtual Float_t SigmaIntegration() const
Get number of sigmas over which cluster didintegration is performed.
AliMUONResponseV0 & operator=(const AliMUONResponseV0 &rhs)