Use references instead of objects. Avoid to create objects when they are not really...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Nov 2005 12:35:27 +0000 (12:35 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Nov 2005 12:35:27 +0000 (12:35 +0000)
PHOS/AliPHOSGeometry.cxx
PHOS/AliPHOSGeometry.h
PHOS/AliPHOSTrackSegmentMakerv1.cxx
PHOS/AliPHOSTrackSegmentMakerv1.h

index 71591c4..bfd9423 100644 (file)
@@ -354,20 +354,20 @@ void AliPHOSGeometry::ImpactOnEmc(Double_t theta, Double_t phi, Int_t & moduleNu
 }
 
 //____________________________________________________________________________
-void AliPHOSGeometry::ImpactOnEmc(TVector3 vec, Int_t & moduleNumber, Double_t & z, Double_t & x) const
+void AliPHOSGeometry::ImpactOnEmc(const TVector3& vec, Int_t & moduleNumber, Double_t & z, Double_t & x) const
 {
   // calculates the impact coordinates on PHOS of a neutral particle  
   // emitted in the direction theta and phi in the ALICE global coordinate system
   // searches for the PHOS EMC module
 
-  TParticle p ; 
-  p.SetMomentum(vec.X(), vec.Y(), vec.Z(), 0.) ; 
-  
-  ImpactOnEmc(p, moduleNumber, z, x) ;
+  Double_t theta = vec.Theta() ; 
+  Double_t phi   = vec.Phi() ; 
+
+  ImpactOnEmc(theta, phi, moduleNumber, z, x) ;
 }
 
 //____________________________________________________________________________
-void AliPHOSGeometry::ImpactOnEmc(TParticle p, Int_t & moduleNumber, Double_t & z, Double_t & x) const
+void AliPHOSGeometry::ImpactOnEmc(const TParticle& p, Int_t & moduleNumber, Double_t & z, Double_t & x) const
 {
   // calculates the impact coordinates on PHOS of a neutral particle  
   // emitted in the direction theta and phi in the ALICE global coordinate system
@@ -496,7 +496,9 @@ void AliPHOSGeometry::RelPosInModule(const Int_t * relid, Float_t & x, Float_t &
 
 //____________________________________________________________________________
 
-TVector3 AliPHOSGeometry::GetModuleCenter(const char *det, Int_t module) const
+void AliPHOSGeometry::GetModuleCenter(TVector3& center, 
+                                     const char *det,
+                                     Int_t module) const
 {
   // Returns a position of the center of the CPV or EMC module
   Float_t rDet = 0.;
@@ -508,17 +510,19 @@ TVector3 AliPHOSGeometry::GetModuleCenter(const char *det, Int_t module) const
   Float_t angle = GetPHOSAngle(module); // (40,20,0,-20,-40) degrees
   angle *= TMath::Pi()/180;
   angle += 3*TMath::Pi()/2.;
-  return TVector3(rDet*TMath::Cos(angle), rDet*TMath::Sin(angle), 0.);
+  center.SetXYZ(rDet*TMath::Cos(angle), rDet*TMath::Sin(angle), 0.);
 }
 
 //____________________________________________________________________________
 
-TVector3 AliPHOSGeometry::Global2Local(TVector3 globalPosition, Int_t module) const
+void AliPHOSGeometry::Global2Local(TVector3& localPosition,
+                                  const TVector3& globalPosition,
+                                  Int_t module) const
 {
   // Transforms a global position of the rec.point to the local coordinate system
   Float_t angle = GetPHOSAngle(module); // (40,20,0,-20,-40) degrees
   angle *= TMath::Pi()/180;
   angle += 3*TMath::Pi()/2.;
-  globalPosition.RotateZ(-angle);
-  return TVector3(globalPosition.Y(),globalPosition.X(),globalPosition.Z());
+  localPosition = globalPosition;
+  localPosition.RotateZ(-angle);
 }
index d69820f..990e88b 100644 (file)
@@ -63,9 +63,9 @@ public:
                                          // single crystal in a EMC module
   void ImpactOnEmc(Double_t theta, Double_t phi, Int_t & ModuleNumber, 
                         Double_t & z, Double_t & x) const ; 
-  void ImpactOnEmc(TVector3 vec, Int_t & ModuleNumber, 
+  void ImpactOnEmc(const TVector3& vec, Int_t & ModuleNumber, 
                         Double_t & z, Double_t & x) const ; 
-  void ImpactOnEmc(TParticle p, Int_t & ModuleNumber, 
+  void ImpactOnEmc(const TParticle& p, Int_t & ModuleNumber, 
                         Double_t & z, Double_t & x) const ; 
                                         // calculates the impact coordinates of a neutral particle  
                                          // emitted in direction theta and phi in ALICE
@@ -119,8 +119,10 @@ public:
   Float_t GetCPVBoxSize(Int_t index)           const { return fGeometryCPV ->GetCPVBoxSize(index);        } 
   Float_t GetIPtoCPVDistance(void)             const { return  GetIPtoOuterCoverDistance() - 
                                                               GetCPVBoxSize(1) - 1.0; }
-  TVector3 GetModuleCenter(const char *det, Int_t module) const;
-  TVector3 Global2Local(TVector3 globalPosition, Int_t module) const;
+  void GetModuleCenter(TVector3& center, const char *det, Int_t module) const;
+  void Global2Local(TVector3& localPosition,
+                   const TVector3& globalPosition,
+                   Int_t module) const;
 
   // Return PHOS' support geometry parameters
 
index dae9b9a..e245695 100644 (file)
@@ -17,6 +17,9 @@
 /* History of cvs commits:
  *
  * $Log$
+ * Revision 1.74  2005/07/08 14:01:36  hristov
+ * Tracking in non-uniform nmagnetic field (Yu.Belikov)
+ *
  * Revision 1.73  2005/05/28 14:19:05  schutz
  * Compilation warnings fixed by T.P.
  *
@@ -178,7 +181,7 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
           continue;
        if (!track->GetPxPyPzAt(rPHOS, fESD->GetMagneticField(), pxyz))
            continue; // track momentum ibid.
-       vecDist = PropagateToPlane(xyz,pxyz,"CPV",cpvClu->GetPHOSMod());
+       PropagateToPlane(vecDist,xyz,pxyz,"CPV",cpvClu->GetPHOSMod());
        //      Info("GetDistanceInPHOSPlane","Track %d propagation to CPV = (%f,%f,%f)",
        //     iTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
        vecDist -= vecCpv;
@@ -199,7 +202,7 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
        geom->GetGlobal((AliRecPoint*)cpvClu,vecCpvGlobal);
        for (Int_t ixyz=0; ixyz<3; ixyz++)
          xyz[ixyz] = vecCpvGlobal[ixyz];
-       vecDist = PropagateToPlane(xyz,pxyz,"EMC",cpvClu->GetPHOSMod());
+       PropagateToPlane(vecDist,xyz,pxyz,"EMC",cpvClu->GetPHOSMod());
 //     Info("GetDistanceInPHOSPlane","Track %d propagation to EMC = (%f,%f,%f)",
 //          iClosestTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
        vecDist -= vecEmc;
@@ -223,8 +226,11 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
 }
 
 //____________________________________________________________________________
-TVector3  AliPHOSTrackSegmentMakerv1::PropagateToPlane(Double_t *x, Double_t *p,
-                                                      const char *det, Int_t moduleNumber) const
+void AliPHOSTrackSegmentMakerv1::PropagateToPlane(TVector3& globalIntersection,
+                                                 Double_t *x,
+                                                 Double_t *p,
+                                                 const char *det,
+                                                 Int_t moduleNumber) const
 {
   // Propagate a straight-line track from the origin point x
   // along the direction p to the CPV or EMC module moduleNumber
@@ -232,17 +238,18 @@ TVector3  AliPHOSTrackSegmentMakerv1::PropagateToPlane(Double_t *x, Double_t *p,
 
   AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
   const AliPHOSGeometry * geom = gime->PHOSGeometry() ; 
-  TVector3 moduleCenter = geom->GetModuleCenter(det,moduleNumber);
-  TVector3 vertex(x);
-  TVector3 direction(p);
+  TVector3 moduleCenter;
+  geom->GetModuleCenter(moduleCenter,det,moduleNumber);
+  TVector3 vertex; vertex.SetXYZ(x[0],x[1],x[2]);
+  TVector3 direction; direction.SetXYZ(p[0],p[1],p[2]);
 
 //   Info("PropagateToCPV","Center of the %s module %d is (%f,%f,%f)",
 //        det,moduleNumber,moduleCenter[0],moduleCenter[1],moduleCenter[2]);
 
   Double_t time = (moduleCenter.Mag2() - vertex.Dot(moduleCenter)) /
     (direction.Dot(moduleCenter));
-  TVector3 globalIntersection = vertex + direction*time;
-  return geom->Global2Local(globalIntersection,moduleNumber);
+  vertex += direction*time;
+  geom->Global2Local(globalIntersection,vertex,moduleNumber);
 }
 
 //____________________________________________________________________________
index 4a6fc62..1283c91 100644 (file)
@@ -7,6 +7,9 @@
 /* History of cvs commits:
  *
  * $Log$
+ * Revision 1.46  2005/05/28 14:19:05  schutz
+ * Compilation warnings fixed by T.P.
+ *
  */
 
 //_________________________________________________________________________
@@ -71,7 +74,9 @@ private:
 
   const TString BranchName() const ; 
   Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSCpvRecPoint * Cpv , Int_t & track ) const ; // see R0
-  TVector3 PropagateToPlane(Double_t *x, Double_t *p, const char *det, Int_t module) const;
+  void PropagateToPlane(TVector3& globalIntersection,
+                       Double_t *x, Double_t *p,
+                       const char *det, Int_t module) const;
   void    Init() ;
   void    InitParameters() ;
   void    PrintTrackSegments(Option_t *option) ;