]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtransform.cxx
fix error in setting the number of dEdx slices to be saved in ESD
[u/mrichter/AliRoot.git] / TRD / AliTRDtransform.cxx
index bc3c360da9227b6d00cf42d3c584460fa82d6727..6be6039c34bf6481ab1698fc136846fad0096c7a 100644 (file)
@@ -40,7 +40,6 @@ ClassImp(AliTRDtransform)
 //_____________________________________________________________________________
 AliTRDtransform::AliTRDtransform()
   :TObject()
-  ,fGeo(0x0)
   ,fDetector(0)
   ,fParam(0x0)
   ,fCalibration(0x0)
@@ -60,11 +59,6 @@ AliTRDtransform::AliTRDtransform()
   // AliTRDtransform default constructor
   //
 
-  fGeo               = new AliTRDgeometry();
-  if (!fGeo->CreateClusterMatrixArray()) {
-    AliError("Could not get transformation matrices\n");
-  }
-
   fParam             = AliTRDCommonParam::Instance();
   if (!fParam) {
     AliError("Could not get common parameters\n");
@@ -85,7 +79,6 @@ AliTRDtransform::AliTRDtransform()
 //_____________________________________________________________________________
 AliTRDtransform::AliTRDtransform(Int_t det)
   :TObject()
-  ,fGeo(0x0)
   ,fDetector(0)
   ,fParam(0x0)
   ,fCalibration(0x0)
@@ -105,11 +98,6 @@ AliTRDtransform::AliTRDtransform(Int_t det)
   // AliTRDtransform constructor for a given detector
   //
 
-  fGeo               = new AliTRDgeometry();
-  if (!fGeo->CreateClusterMatrixArray()) {
-    AliError("Could not get transformation matrices\n");
-  }
-
   fParam             = AliTRDCommonParam::Instance();
   if (!fParam) {
     AliError("Could not get common parameters\n");
@@ -132,7 +120,6 @@ AliTRDtransform::AliTRDtransform(Int_t det)
 //_____________________________________________________________________________
 AliTRDtransform::AliTRDtransform(const AliTRDtransform &t)
   :TObject(t)
-  ,fGeo(0x0)
   ,fDetector(t.fDetector)
   ,fParam(0x0)
   ,fCalibration(0x0)
@@ -152,12 +139,6 @@ AliTRDtransform::AliTRDtransform(const AliTRDtransform &t)
   // AliTRDtransform copy constructor
   //
 
-  if (fGeo) {
-    delete fGeo;
-  }
-  fGeo               = new AliTRDgeometry();
-  fGeo->CreateClusterMatrixArray();
-
   fParam             = AliTRDCommonParam::Instance();
   if (!fParam) {
     AliError("Could not get common parameters\n");
@@ -180,10 +161,61 @@ AliTRDtransform::~AliTRDtransform()
   // AliTRDtransform destructor
   //
 
-  if (fGeo) {
-    delete fGeo;
+}
+
+//_____________________________________________________________________________
+AliTRDtransform &AliTRDtransform::operator=(const AliTRDtransform &t)
+{
+  //
+  // Assignment operator
+  //
+
+  if (this != &t) {
+    ((AliTRDtransform &) t).Copy(*this);
   }
 
+  return *this;
+
+}
+
+//_____________________________________________________________________________
+void AliTRDtransform::Copy(TObject &t) const
+{
+  //
+  // Copy function
+  //
+
+  ((AliTRDtransform &) t).fDetector          = fDetector;
+  ((AliTRDtransform &) t).fParam             = AliTRDCommonParam::Instance();
+  ((AliTRDtransform &) t).fCalibration       = AliTRDcalibDB::Instance();
+  if (fCalibration) {
+    ((AliTRDtransform &) t).fkCalVdriftDet   = fCalibration->GetVdriftDet();
+    ((AliTRDtransform &) t).fkCalT0Det       = fCalibration->GetT0Det();
+  }
+  else {
+    ((AliTRDtransform &) t).fkCalVdriftDet   = 0;
+    ((AliTRDtransform &) t).fkCalT0Det       = 0;
+  }
+  ((AliTRDtransform &) t).fCalVdriftROC      = 0x0;
+  ((AliTRDtransform &) t).fCalT0ROC          = 0x0;
+  ((AliTRDtransform &) t).fCalPRFROC         = 0x0;
+  ((AliTRDtransform &) t).fCalVdriftDetValue = 0; 
+  ((AliTRDtransform &) t).fCalT0DetValue     = 0;
+  ((AliTRDtransform &) t).fSamplingFrequency = 0;
+  ((AliTRDtransform &) t).fPadPlane          = 0x0;
+  ((AliTRDtransform &) t).fZShiftIdeal       = 0;
+  ((AliTRDtransform &) t).fMatrix            = 0x0;
+
+}
+
+//_____________________________________________________________________________
+AliTRDgeometry& AliTRDtransform::Geometry()
+{
+  static AliTRDgeometry g;
+  if (!g.CreateClusterMatrixArray()) {
+    AliErrorGeneral("AliTRDtransform::Geometry()", "Could not get transformation matrices\n");
+  }
+  return g;
 }
 
 //_____________________________________________________________________________
@@ -206,13 +238,13 @@ void AliTRDtransform::SetDetector(Int_t det)
   fCalT0DetValue     = fkCalT0Det->GetValue(det);
 
   // Shift needed to define Z-position relative to middle of chamber
-  Int_t layer        = fGeo->GetLayer(det);
-  Int_t stack        = fGeo->GetStack(det);
-  fPadPlane          = fGeo->GetPadPlane(layer,stack);
+  Int_t layer        = Geometry().GetLayer(det);
+  Int_t stack        = Geometry().GetStack(det);
+  fPadPlane          = Geometry().GetPadPlane(layer,stack);
   fZShiftIdeal       = 0.5 * (fPadPlane->GetRow0() + fPadPlane->GetRowEnd());
 
   // Get the current transformation matrix
-  fMatrix            = fGeo->GetClusterMatrix(det);
+  fMatrix            = Geometry().GetClusterMatrix(det);
 
 }