LCOV - code coverage report
Current view: top level - MUON/MUONbase - AliMUONMathieson.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 39 41 95.1 %
Date: 2016-06-14 17:26:59 Functions: 10 10 100.0 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : /* $Id$ */
      17             : 
      18             : //-----------------------------------------------------------------------------
      19             : // Class AliMUONMathieson
      20             : // -----------------------
      21             : // Implementation of Mathieson response
      22             : // Separated from other classes by CH. Finck with removing circular
      23             : // dependencies 
      24             : //-----------------------------------------------------------------------------
      25             : 
      26             : #include "AliMUONMathieson.h"
      27             : 
      28             : #include "AliLog.h"
      29             : 
      30             : #include <TClass.h>
      31             : #include <TMath.h>
      32             : #include <TRandom.h>
      33             : 
      34             : /// \cond CLASSIMP
      35          18 : ClassImp(AliMUONMathieson)
      36             : /// \endcond
      37             :         
      38             : //__________________________________________________________________________
      39         406 : AliMUONMathieson::AliMUONMathieson() :
      40         406 :     fSqrtKx3(0.),
      41         406 :     fKx2(0.),
      42         406 :     fKx4(0.),
      43         406 :     fSqrtKy3(0.),
      44         406 :     fKy2(0.),
      45         406 :     fKy4(0.),
      46         406 :     fPitch(0.),
      47         406 :     fInversePitch(0.)
      48        2030 : {
      49             : /// Default constructor
      50             : 
      51         812 : }
      52             : 
      53             : //__________________________________________________________________________
      54             : AliMUONMathieson::~AliMUONMathieson()
      55        1624 : {
      56             : /// Destructor
      57        1624 : }
      58             : 
      59             :   //__________________________________________________________________________
      60             : void AliMUONMathieson::SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3)
      61             : {
      62             : /// Set to "SqrtKx3" the Mathieson parameter K3 ("fSqrtKx3")
      63             : /// in the X direction, perpendicular to the wires,
      64             : /// and derive the Mathieson parameters K2 ("fKx2") and K4 ("fKx4")
      65             : /// in the same direction
      66         292 :   fSqrtKx3 = SqrtKx3;
      67         146 :   fKx2 = TMath::Pi() / 2. * (1. - 0.5 * fSqrtKx3);
      68         146 :   Float_t cx1 = fKx2 * fSqrtKx3 / 4. / TMath::ATan(Double_t(fSqrtKx3));
      69         146 :   fKx4 = cx1 / fKx2 / fSqrtKx3;
      70         146 : }
      71             :         
      72             :   //__________________________________________________________________________
      73             : void AliMUONMathieson::SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3)
      74             : {
      75             : /// Set to "SqrtKy3" the Mathieson parameter K3 ("fSqrtKy3")
      76             : /// in the Y direction, along the wires,
      77             : /// and derive the Mathieson parameters K2 ("fKy2") and K4 ("fKy4")
      78             : /// in the same direction
      79         292 :   fSqrtKy3 = SqrtKy3;
      80         146 :   fKy2 = TMath::Pi() / 2. * (1. - 0.5 * fSqrtKy3);
      81         146 :   Float_t cy1 = fKy2 * fSqrtKy3 / 4. / TMath::ATan(Double_t(fSqrtKy3));
      82         146 :   fKy4 = cy1 / fKy2 / fSqrtKy3;
      83         146 : }
      84             : 
      85             : //_____________________________________________________________________________
      86             : Float_t
      87             : AliMUONMathieson::IntXY(Float_t xi1, Float_t yi1, Float_t xi2, Float_t yi2) const
      88             : {
      89             : /// Integrate the Mathieson over x and y
      90             : 
      91      100604 :   xi1 *= fInversePitch;
      92       50302 :   xi2 *= fInversePitch;
      93       50302 :   yi1 *= fInversePitch;
      94       50302 :   yi2 *= fInversePitch;
      95             :   //
      96             :   // The Mathieson function 
      97       50302 :   Double_t ux1=fSqrtKx3*TMath::TanH(fKx2*xi1);
      98       50302 :   Double_t ux2=fSqrtKx3*TMath::TanH(fKx2*xi2);
      99             :   
     100       50302 :   Double_t uy1=fSqrtKy3*TMath::TanH(fKy2*yi1);
     101       50302 :   Double_t uy2=fSqrtKy3*TMath::TanH(fKy2*yi2);
     102             :   
     103             :   
     104      150906 :   return Float_t(4.*fKx4*(TMath::ATan(ux2)-TMath::ATan(ux1))*
     105      100604 :                  fKy4*(TMath::ATan(uy2)-TMath::ATan(uy1)));
     106             : }
     107             : 
     108             : //______________________________________________________________________________
     109             : void 
     110             : AliMUONMathieson::SetPitch(Float_t p1)
     111             : {
     112             : /// Defines the pitch, and store its inverse, which is what is used in fact.
     113             : 
     114         292 :   fPitch = p1;
     115         146 :   if ( fPitch )
     116             :   {
     117         146 :     fInversePitch = 1/fPitch;
     118         146 :   }
     119             :   else
     120             :   {
     121           0 :     AliError(Form("Invalid pitch %e",p1));
     122           0 :     fInversePitch = 0.0;
     123             :   }
     124         146 : }
     125             : 

Generated by: LCOV version 1.11