]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONMathieson.cxx
New segmentation with switch between old and new (Ch. Finck)
[u/mrichter/AliRoot.git] / MUON / AliMUONMathieson.cxx
index bbd26395372a8e3fa392f199a381a1f7c4e198a7..3e4a5726489e14c33c37cb168b76b0308a19d390 100644 (file)
 
 #include "AliMUONMathieson.h"
 #include "AliSegmentation.h"
+#include "AliMUONGeometrySegmentation.h"
 
 
 ClassImp(AliMUONMathieson)
        
 //__________________________________________________________________________
-AliMUONMathieson::AliMUONMathieson() 
+  AliMUONMathieson::AliMUONMathieson() :
+    fSqrtKx3(0.),
+    fKx2(0.),
+    fKx4(0.),
+    fSqrtKy3(0.),
+    fKy2(0.),
+    fKy4(0.),
+    fPitch(0.)
 {
 // Default constructor
 
@@ -56,14 +64,12 @@ void AliMUONMathieson::SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3)
   Float_t cy1 = fKy2 * fSqrtKy3 / 4. / TMath::ATan(Double_t(fSqrtKy3));
   fKy4 = cy1 / fKy2 / fSqrtKy3;
 }
-
 // -------------------------------------------
-
 Float_t AliMUONMathieson::IntXY(AliSegmentation * segmentation)
 {
 // Calculate charge on current pad according to Mathieson distribution
 // 
-    const Float_t kInversePitch = 1/fPitch;
+    const Float_t kInversePitch = 1/fPitch;      
 //
 //  Integration limits defined by segmentation model
 //  
@@ -85,13 +91,31 @@ Float_t AliMUONMathieson::IntXY(AliSegmentation * segmentation)
     return Float_t(4.*fKx4*(TMath::ATan(ux2)-TMath::ATan(ux1))*
                      fKy4*(TMath::ATan(uy2)-TMath::ATan(uy1)));
 }
+// -------------------------------------------
+Float_t AliMUONMathieson::IntXY(Int_t idDE, AliMUONGeometrySegmentation* segmentation)
+{
+// Calculate charge on current pad according to Mathieson distribution
+// using Detection elt
+   
+    const Float_t kInversePitch = 1./fPitch;
+//
+//  Integration limits defined by segmentation model
+//  
+    Float_t xi1, xi2, yi1, yi2;
+    segmentation->IntegrationLimits(idDE, xi1,xi2,yi1,yi2);
+    xi1=xi1*kInversePitch;
+    xi2=xi2*kInversePitch;
+    yi1=yi1*kInversePitch;
+    yi2=yi2*kInversePitch;
+//
+// The Mathieson function 
+    Double_t ux1=fSqrtKx3*TMath::TanH(fKx2*xi1);
+    Double_t ux2=fSqrtKx3*TMath::TanH(fKx2*xi2);
 
+    Double_t uy1=fSqrtKy3*TMath::TanH(fKy2*yi1);
+    Double_t uy2=fSqrtKy3*TMath::TanH(fKy2*yi2);
 
-
-
-
-
-
-
-
-
+    
+    return Float_t(4.*fKx4*(TMath::ATan(ux2)-TMath::ATan(ux1))*
+                     fKy4*(TMath::ATan(uy2)-TMath::ATan(uy1)));
+}