+AliMUON* muon()
+{
+ return static_cast<AliMUON*>(gAlice->GetModule("MUON"));
+}
+
+void Global2Local(Int_t detElemId, Double_t xg, Double_t yg, Double_t zg,
+ Double_t& xl, Double_t& yl, Double_t& zl)
+{
+ /// ideally should be :
+ /// Double_t x,y,z;
+ /// AliMUONGeometry::Global2Local(detElemId,xg,yg,zg,x,y,z);
+ /// but while waiting for this geometry singleton, let's go through
+ /// AliMUON still.
+
+ const AliMUONGeometryTransformer* transformer = muon()->GetGeometryTransformer();
+ transformer->Global2Local(detElemId,xg,yg,zg,xl,yl,zl);
+}
+
+//__________________________________________________________________________
+AliMUONResponseV0::AliMUONResponseV0()
+ : AliMUONResponse(),
+ fChargeSlope(0.0),
+ fChargeSpreadX(0.0),
+ fChargeSpreadY(0.0),
+ fSigmaIntegration(0.0),
+ fMaxAdc(0),
+ fSaturation(0),
+ fZeroSuppression(0),
+ fChargeCorrel(0.0),
+ fMathieson(new AliMUONMathieson),
+ fChargeThreshold(1e-4)
+{
+ /// Normal constructor
+ AliDebug(1,Form("Default ctor"));
+}
+
+//__________________________________________________________________________
+AliMUONResponseV0::AliMUONResponseV0(const AliMUONResponseV0& other)
+: AliMUONResponse(),
+fChargeSlope(0.0),
+fChargeSpreadX(0.0),
+fChargeSpreadY(0.0),
+fSigmaIntegration(0.0),
+fMaxAdc(0),
+fSaturation(0),
+fZeroSuppression(0),
+fChargeCorrel(0.0),
+fMathieson(0),
+fChargeThreshold(1e-4)
+{
+ /// copy ctor
+ other.CopyTo(*this);
+}
+
+//__________________________________________________________________________
+AliMUONResponseV0&
+AliMUONResponseV0::operator=(const AliMUONResponseV0& other)
+{
+ /// Assignment operator
+ other.CopyTo(*this);
+ return *this;
+}
+
+//__________________________________________________________________________
+AliMUONResponseV0::~AliMUONResponseV0()
+{
+/// Destructor
+
+ AliDebug(1,"");
+ delete fMathieson;
+}
+
+//______________________________________________________________________________
+void
+AliMUONResponseV0::CopyTo(AliMUONResponseV0& other) const
+{
+ /// Copy *this to other
+ other.fChargeSlope=fChargeSlope;
+ other.fChargeSpreadX=fChargeSpreadX;
+ other.fChargeSpreadY=fChargeSpreadY;
+ other.fSigmaIntegration=fSigmaIntegration;
+ other.fMaxAdc=fMaxAdc;
+ other.fSaturation=fSaturation;
+ other.fZeroSuppression=fZeroSuppression;
+ other.fChargeCorrel=fChargeCorrel;
+ delete other.fMathieson;
+ other.fMathieson = new AliMUONMathieson(*fMathieson);
+ other.fChargeThreshold=fChargeThreshold;
+}
+
+//______________________________________________________________________________
+void
+AliMUONResponseV0::Print(Option_t*) const
+{
+/// Printing
+
+ cout << " ChargeSlope=" << fChargeSlope
+ << " ChargeSpreadX,Y=" << fChargeSpreadX
+ << fChargeSpreadY
+ << " ChargeCorrelation=" << fChargeCorrel
+ << endl;
+}
+