]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSegment.cxx
Transition to NewIO
[u/mrichter/AliRoot.git] / MUON / AliMUONSegment.cxx
index 01671570e80cc2e02eb63c71086850806c7e275b..0d250be06314b4c59ff83325183473b5860ae123 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.3  2000/06/25 13:06:39  hristov
-Inline functions moved from *.cxx to *.h files instead of forward declarations
+/* $Id$ */
 
-Revision 1.2  2000/06/15 07:58:48  morsch
-Code from MUON-dev joined
-
-Revision 1.1.2.4  2000/06/12 10:10:21  morsch
-Dummy copy constructor and assignment operator added
-
-Revision 1.1.2.3  2000/06/09 21:01:16  morsch
-Make includes consistent with new file structure.
-
-Revision 1.1.2.2  2000/06/09 12:58:05  gosset
-Removed comment beginnings in Log sections of .cxx files
-Suppressed most violations of coding rules
-
-Revision 1.1.2.1  2000/06/07 14:44:53  gosset
-Addition of files for track reconstruction in C++
-*/
-
-//__________________________________________________________________________
+///////////////////////////////////////////////////////////
 //
-// Segment for reconstruction in ALICE dimuon spectrometer:
+// Segment for reconstruction
+// in 
+// ALICE 
+// dimuon 
+// spectrometer:
 // two hits for reconstruction in the two chambers of one station
-//__________________________________________________________________________
-
-#include "AliMUONSegment.h" 
+//
+///////////////////////////////////////////////////////////
 
 #include "AliMUON.h"
+#include "AliMUONChamber.h" 
 #include "AliMUONHitForRec.h" 
+#include "AliMUONSegment.h" 
 #include "AliMUONTrackParam.h" 
-#include "AliMUONChamber.h" 
-#include "AliRun.h"
+#include "AliRun.h" // for gAlice
 
 ClassImp(AliMUONSegment) // Class implementation in ROOT context
 
+  //__________________________________________________________________________
+AliMUONSegment::AliMUONSegment()
+{
+  // Default constructor
+  fHitForRecPtr1 = 0; // pointer to HitForRec in first chamber
+  fHitForRecPtr2 = 0; // pointer to HitForRec in second chamber
+  // Bending plane:
+  fBendingCoor = 0.0; // Coordinate in bending plane
+  fBendingSlope = 0.0; // Slope in bending plane
+  // Covariance in bending plane:
+  fBendingCoorReso2 = 0.0; // Covariance(coordinate C1 in first chamber)
+  fBendingSlopeReso2 = 0.0; // Covariance(slope)
+  fBendingCoorSlopeReso2 = 0.0; // Covariance(C1,slope)
+  fBendingImpact = 0.0; // Impact parameter in bending plane
+  // Non Bending plane:
+  fNonBendingCoor = 0.0; // Coordinate in non bending plane
+  fNonBendingSlope = 0.0; // Slope in non bending plane
+  // Covariance in non bending plane:
+  fNonBendingCoorReso2 = 0.0; // Covariance(coordinate C1 in first chamber)
+  fNonBendingSlopeReso2 = 0.0; // Covariance(slope)
+  fNonBendingCoorSlopeReso2 = 0.0; // Covariance(C1,slope)
+  fNonBendingImpact = 0.0; // Impact parameter in non bending plane
+  fInTrack = kFALSE; // TRUE if segment belongs to one track
+}
+
   //__________________________________________________________________________
 AliMUONSegment::AliMUONSegment(AliMUONHitForRec* Hit1, AliMUONHitForRec* Hit2)
 {
@@ -100,14 +109,14 @@ AliMUONSegment & AliMUONSegment::operator=(const AliMUONSegment& MUONSegment)
 }
 
   //__________________________________________________________________________
-Int_t AliMUONSegment::Compare(TObject* Segment)
+Int_t AliMUONSegment::Compare(const TObject* Segment) const
 {
   // "Compare" function to sort with increasing absolute value
   // of the "impact parameter" in bending plane.
   // Returns -1 (0, +1) if |impact parameter| of current Segment
   // is smaller than (equal to, larger than) |impact parameter| of Segment
-  if (TMath::Abs(((AliMUONSegment*)this)->fBendingSlope)
-      < TMath::Abs(((AliMUONSegment*)Segment)->fBendingSlope))
+  if (TMath::Abs(((AliMUONSegment*)this)->fBendingImpact)
+      < TMath::Abs(((AliMUONSegment*)Segment)->fBendingImpact))
     return(-1);
   // continuous parameter, hence no need for testing equal case
   else return(+1);
@@ -253,18 +262,27 @@ void AliMUONSegment::UpdateFromStationTrackParam(AliMUONTrackParam *TrackParam,
   // The "road" is parametrized from the old reco_muon.F
   // with 8 cm between stations.
   AliMUONTrackParam *param0;
-  Double_t cReso2, sReso2;
+//   Double_t cReso2, sReso2;
   // parameters to define the widths of the searching roads in station 0,1,2
   // width = p0 + p1/ (momentum)^2
   //                  station number:        0         1          2
-  static Double_t p0BendingCoor[3] =     { 6.43e-2, 1.64e-2,   0.034 };   
-  static Double_t p1BendingCoor[3] =     {    986.,    821.,    446. };  
-  static Double_t p0BendingSlope[3] =    { 3.54e-6, 3.63e-6,  3.6e-6 };  
-  static Double_t p1BendingSlope[3] =    { 4.49e-3,  4.8e-3,   0.011 };  
-  static Double_t p0NonBendingCoor[3] =  { 4.66e-2, 4.83e-2,   0.049 };   
-  static Double_t p1NonBendingCoor[3] =  {   1444.,    866.,    354. };  
-  static Double_t p0NonBendingSlope[3] = { 6.14e-4, 6.49e-4, 6.85e-4 };  
-  static Double_t p1NonBendingSlope[3] = {      0.,      0.,      0. };  
+//   static Double_t p0BendingCoor[3] =     { 6.43e-2, 1.64e-2,   0.034 };   
+//   static Double_t p1BendingCoor[3] =     {    986.,    821.,    446. };  
+//   static Double_t p0BendingSlope[3] =    { 3.54e-6, 3.63e-6,  3.6e-6 };  
+//   static Double_t p1BendingSlope[3] =    { 4.49e-3,  4.8e-3,   0.011 };  
+//   static Double_t p0NonBendingCoor[3] =  { 4.66e-2, 4.83e-2,   0.049 };   
+//   static Double_t p1NonBendingCoor[3] =  {   1444.,    866.,    354. };  
+//   static Double_t p0NonBendingSlope[3] = { 6.14e-4, 6.49e-4, 6.85e-4 };  
+//   static Double_t p1NonBendingSlope[3] = {      0.,      0.,      0. };
+  
+  static Double_t p0BendingCoor[3] =     { 6.43e-2, 6.43e-2,   6.43e-2  };   
+  static Double_t p1BendingCoor[3] =     {    986.,    986.,       986. };  
+  static Double_t p0BendingSlope[3] =    {   3.6e-6,   3.6e-6,     3.6e-6  };  
+  static Double_t p1BendingSlope[3] =    {  1.1e-2,  1.1e-2,    1.1e-2  };  
+  static Double_t p0NonBendingCoor[3] =  {   0.049,   0.049,     0.049  };   
+  static Double_t p1NonBendingCoor[3] =  {   1444.,   1444.,      1444. };  
+  static Double_t p0NonBendingSlope[3] = {   6.8e-4,   6.8e-4,     6.8e-4  };  
+  static Double_t p1NonBendingSlope[3] = {      0.,      0.,         0. };  
   param0 = &(TrackParam[0]);
 
 // OLD version
@@ -296,15 +314,15 @@ void AliMUONSegment::UpdateFromStationTrackParam(AliMUONTrackParam *TrackParam,
   // because they are added in the functions "NormalizedChi2WithSegment"
   // and "NormalizedChi2WithHitForRec"
   // Bending plane
-  cReso2 = fBendingCoorReso2;
-  sReso2 = (2. * cReso2 )/ (Dz3*Dz3) ;
-  fBendingCoorReso2 = p0BendingCoor[Station] + p1BendingCoor[Station]*InverseMomentum*InverseMomentum - cReso2;
-  fBendingSlopeReso2 = p0BendingSlope[Station] + p1BendingSlope[Station]*InverseMomentum*InverseMomentum - sReso2;
+//   cReso2 = fBendingCoorReso2;
+//   sReso2 = (2. * cReso2 )/ (Dz3*Dz3) ;
+  fBendingCoorReso2 = p0BendingCoor[Station] + p1BendingCoor[Station]*InverseMomentum*InverseMomentum ;  // - cReso2
+  fBendingSlopeReso2 = p0BendingSlope[Station] + p1BendingSlope[Station]*InverseMomentum*InverseMomentum; //  - sReso2;
   // Non bending plane
-  cReso2 = fNonBendingCoorReso2;
-  sReso2 =  (2. * cReso2 )/ (Dz3*Dz3) ;
-  fNonBendingCoorReso2 = p0NonBendingCoor[Station] + p1NonBendingCoor[Station]*InverseMomentum*InverseMomentum - cReso2;
-  fNonBendingSlopeReso2 = p0NonBendingSlope[Station] + p1NonBendingSlope[Station]*InverseMomentum*InverseMomentum - sReso2;
+//   cReso2 = fNonBendingCoorReso2;
+//   sReso2 =  (2. * cReso2 )/ (Dz3*Dz3) ;
+  fNonBendingCoorReso2 = p0NonBendingCoor[Station] + p1NonBendingCoor[Station]*InverseMomentum*InverseMomentum; // - cReso2;
+  fNonBendingSlopeReso2 = p0NonBendingSlope[Station] + p1NonBendingSlope[Station]*InverseMomentum*InverseMomentum; //  - sReso2;
   return;
 }