* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.5 2001/01/08 11:01:02 gosset
-Modifications used for addendum to Dimuon TDR (JP Cussonneau):
-*. MaxBendingMomentum to make both a segment and a track (default 500)
-*. MaxChi2 per degree of freedom to make a track (default 100)
-*. MinBendingMomentum used also to make a track
- and not only a segment (default 3)
-*. wider roads for track search in stations 1 to 3
-*. extrapolation to actual Z instead of Z(chamber) in FollowTracks
-*. in track fit:
- - limits on parameters X and Y (+/-500)
- - covariance matrices in double precision
- - normalization of covariance matrices before inversion
- - suppression of Minuit printouts
-*. correction against memory leak (delete extrapHit) in FollowTracks
-*. RMax to 10 degrees with Z(chamber) instead of fixed values;
- RMin and Rmax cuts suppressed in NewHitForRecFromGEANT,
- because useless with realistic geometry
+/* $Id$ */
-Revision 1.4 2000/06/30 10:15:48 gosset
-Changes to EventReconstructor...:
-precision fit with multiple Coulomb scattering;
-extrapolation to vertex with Branson correction in absorber (JPC)
-
-Revision 1.3 2000/06/25 13:06:39 hristov
-Inline functions moved from *.cxx to *.h files instead of forward declarations
-
-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 "AliMUONTrackParam.h"
-#include "AliMUONChamber.h"
-#include "AliRun.h"
+#include "AliRun.h" // for gAlice
ClassImp(AliMUONSegment) // Class implementation in ROOT context
+ //__________________________________________________________________________
+AliMUONSegment::AliMUONSegment()
+ : TObject()
+{
+ // 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)
+ : TObject()
{
// Constructor for AliMUONSegment from two HitForRec's,
// one, in the first chamber of the station, pointed to by "Hit1",
return;
}
-AliMUONSegment::AliMUONSegment (const AliMUONSegment& MUONSegment)
+AliMUONSegment::AliMUONSegment (const AliMUONSegment& theMUONSegment)
+ : TObject(theMUONSegment)
{
-// Dummy copy constructor
+// Protected copy constructor
+
+ Fatal("AliMUONSegment", "Not implemented.");
}
-AliMUONSegment & AliMUONSegment::operator=(const AliMUONSegment& MUONSegment)
+AliMUONSegment & AliMUONSegment::operator=(const AliMUONSegment& rhs)
{
-// Dummy assignment operator
- return *this;
+// Protected assignement operator
+
+ if (this == &rhs) return *this;
+
+ Fatal("operator=", "Not implemented.");
+
+ return *this;
}
//__________________________________________________________________________
// 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);
}
//__________________________________________________________________________
-Double_t AliMUONSegment::NormalizedChi2WithSegment(AliMUONSegment* Segment, Double_t Sigma2Cut)
+Double_t AliMUONSegment::NormalizedChi2WithSegment(AliMUONSegment* Segment, Double_t Sigma2Cut) const
{
// Calculate the normalized Chi2 between the current Segment (this)
// and the Segment pointed to by "Segment",
}
//__________________________________________________________________________
-AliMUONSegment* AliMUONSegment::CreateSegmentFromLinearExtrapToStation (Int_t Station, Double_t MCSfactor)
+AliMUONSegment* AliMUONSegment::CreateSegmentFromLinearExtrapToStation (Int_t Station, Double_t MCSfactor) const
{
// Extrapolates linearly the current Segment (this) to station (0..) "Station".
// Multiple Coulomb scattering calculated from "MCSfactor"
}
//__________________________________________________________________________
-AliMUONHitForRec* AliMUONSegment::CreateHitForRecFromLinearExtrapToChamber (Int_t Chamber, Double_t MCSfactor)
+AliMUONHitForRec* AliMUONSegment::CreateHitForRecFromLinearExtrapToChamber (Int_t Chamber, Double_t MCSfactor) const
{
// Extrapolates linearly the current Segment (this) to chamber(0..) "Chamber".
// Multiple Coulomb scattering calculated from "MCSfactor"
}
//__________________________________________________________________________
-void AliMUONSegment::UpdateFromStationTrackParam(AliMUONTrackParam *TrackParam, Double_t MCSfactor, Double_t Dz1, Double_t Dz2, Double_t Dz3, Int_t Station, Double_t InverseMomentum)
+void AliMUONSegment::UpdateFromStationTrackParam(AliMUONTrackParam *TrackParam, Double_t /*MCSfactor*/, Double_t /*Dz1*/, Double_t /*Dz2*/, Double_t /*Dz3*/, Int_t Station, Double_t InverseMomentum)
{
// Fill data members with values calculated from the array of track parameters
// pointed to by "TrackParam" (index = 0 and 1 for first and second chambers