An interface to the TPC transformation method is added
authorsgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Sep 2010 12:36:52 +0000 (12:36 +0000)
committersgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Sep 2010 12:36:52 +0000 (12:36 +0000)
HLT/TPCLib/AliHLTTPCClusterTransformation.cxx [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCClusterTransformation.h [new file with mode: 0644]
HLT/libAliHLTTPC.pkg

diff --git a/HLT/TPCLib/AliHLTTPCClusterTransformation.cxx b/HLT/TPCLib/AliHLTTPCClusterTransformation.cxx
new file mode 100644 (file)
index 0000000..e35ee81
--- /dev/null
@@ -0,0 +1,132 @@
+// $Id: AliHLTTPCClusterTransformation.cxx 41244 2010-05-14 08:13:35Z kkanaki $
+
+//**************************************************************************
+//* This file is property of and copyright by the ALICE HLT Project        *
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//*                                                                        *
+//* Primary Authors: Kalliopi Kanaki <Kalliopi.Kanaki@ift.uib.no>          *
+//*                  for The ALICE HLT Project.                            *
+//*                                                                        *
+//* Permission to use, copy, modify and distribute this software and its   *
+//* documentation strictly for non-commercial purposes is hereby granted   *
+//* without fee, provided that the above copyright notice appears in all   *
+//* copies and that both the copyright notice and this permission notice   *
+//* appear in the supporting documentation. The authors make no claims     *
+//* about the suitability of this software for any purpose. It is          *
+//* provided "as is" without express or implied warranty.                  *
+//**************************************************************************
+
+/** @file   AliHLTTPCClusterTransformation.cxx
+    @author Kalliopi Kanaki, Sergey Gorbubnov
+    @date   
+    @brief 
+*/
+
+
+#include "AliHLTTPCClusterTransformation.h"
+#include "AliHLTTPCTransform.h"
+
+#include "AliTPCcalibDB.h"
+#include "AliTPCTransform.h"
+#include "AliTPCRecoParam.h"
+#include "AliTPCParam.h"
+
+
+ClassImp(AliHLTTPCClusterTransformation) //ROOT macro for the implementation of ROOT specific class methods
+
+AliHLTTPCClusterTransformation::AliHLTTPCClusterTransformation()
+:
+  fOfflineTransform(NULL),
+  fOfflineTPCParam( NULL ),
+  fOfflineTPCRecoParam(*AliTPCRecoParam::GetHLTParam())
+{
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt  
+}
+
+AliHLTTPCClusterTransformation::AliHLTTPCClusterTransformation(const AliHLTTPCClusterTransformation&)
+:
+  fOfflineTransform(NULL),
+  fOfflineTPCParam( NULL ),
+  fOfflineTPCRecoParam(*AliTPCRecoParam::GetHLTParam())
+{
+  // copy constructor prohibited
+}
+
+AliHLTTPCClusterTransformation& AliHLTTPCClusterTransformation::operator=(const AliHLTTPCClusterTransformation&)
+{
+  // assignment operator prohibited
+  return *this;
+}
+
+AliHLTTPCClusterTransformation::~AliHLTTPCClusterTransformation() 
+{ 
+  // see header file for class documentation
+  delete fOfflineTransform;
+}
+
+
+int  AliHLTTPCClusterTransformation::Init( double FieldBz, UInt_t /*TimeStamp*/ )
+{
+  // Initialisation
+
+  AliTPCcalibDB* pCalib=AliTPCcalibDB::Instance();
+
+  if(!pCalib ) return -1;
+
+  pCalib->SetExBField(FieldBz);
+
+  if( !pCalib->GetTransform() ) return -2;
+  
+  fOfflineTransform = new AliTPCTransform (*pCalib->GetTransform());
+  fOfflineTransform->SetCurrentRecoParam(&fOfflineTPCRecoParam);
+
+  fOfflineTPCParam = pCalib->GetParameters(); 
+  if( !fOfflineTPCParam ) return -3;
+
+  fOfflineTPCParam->Update();
+  fOfflineTPCParam->ReadGeoMatrices();
+
+  return 0;
+}
+
+
+void AliHLTTPCClusterTransformation::SetTimeStamp( UInt_t /*TimeStamp*/ )
+{
+  // Set the current time stamp
+}
+
+
+int  AliHLTTPCClusterTransformation::Transform( int Slice, int Row, float Pad, float Time, float XYZ[] )
+{
+  // Convert row, pad, time to X Y Z
+          
+  Int_t sector=-99, thisrow=-99;
+  AliHLTTPCTransform::Slice2Sector( Slice, Row, sector, thisrow);
+
+  if( !fOfflineTransform ){               
+    AliHLTTPCTransform::Raw2Local( XYZ, sector, thisrow, Pad, Time); 
+    if(Slice>17) XYZ[1]= - XYZ[1];        
+    return 0;
+  }
+
+  Int_t iSector[1]= {sector};   
+  Double_t x[3] = { thisrow, Pad, Time }; 
+  fOfflineTransform->Transform(x,iSector,0,1);
+  Double_t y[3]= {x[0],x[1],x[2]};
+
+         
+  if( fOfflineTPCParam && sector<fOfflineTPCParam->GetNSector() ){
+    TGeoHMatrix  *alignment = fOfflineTPCParam->GetClusterMatrix( sector );
+    if ( alignment ) alignment->LocalToMaster( x, y);
+  }     
+
+  XYZ[0] = y[0];
+  XYZ[1] = y[1];
+  XYZ[2] = y[2];
+
+  return 0; 
+}
diff --git a/HLT/TPCLib/AliHLTTPCClusterTransformation.h b/HLT/TPCLib/AliHLTTPCClusterTransformation.h
new file mode 100644 (file)
index 0000000..0199010
--- /dev/null
@@ -0,0 +1,64 @@
+// -*- Mode: C++ -*-
+// $Id: AliHLTTPCClusterTransformation.h 40939 2010-05-04 15:35:58Z kkanaki $
+
+#ifndef ALIHLTTPCCLUSTERTRANSFORMATION_H
+#define ALIHLTTPCCLUSTERTRANSFORMATION_H
+
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
+
+/** @file   AliHLTTPCClusterTransformation.h
+    @author Kalliopi Kanaki, Sergey Gorbunov
+    @date   
+    @brief
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+#include "AliTPCRecoParam.h"
+class AliTPCParam;
+class AliTPCTransform;
+
+/**
+ * @class AliHLTTPCClusterTransformation
+ *
+ * The class transforms internal TPC coordinates (pad,time) to XYZ.
+ * Allnecessary calibration and alignment corrections are applied
+ * 
+ * @ingroup alihlt_tpc_components
+ */
+
+class AliHLTTPCClusterTransformation{
+    
+ public:
+
+  /** standard constructor */    
+  AliHLTTPCClusterTransformation();           
+  /** destructor */
+  virtual ~AliHLTTPCClusterTransformation();
+
+  int  Init( double FieldBz, UInt_t TimeStamp );
+  void SetTimeStamp( UInt_t TimeStamp );
+  int  Transform( int Slice, int Row, float Pad, float Time, float XYZ[] );
+
+ protected:
+
+  AliTPCTransform * fOfflineTransform;                             //! transient
+  AliTPCParam     *fOfflineTPCParam;                                 //! transient
+  AliTPCRecoParam fOfflineTPCRecoParam;                            //! transient
+
+ private:
+  /** copy constructor prohibited */
+  AliHLTTPCClusterTransformation(const AliHLTTPCClusterTransformation&);
+  /** assignment operator prohibited */
+  AliHLTTPCClusterTransformation& operator=(const AliHLTTPCClusterTransformation&);
+
+  ClassDef(AliHLTTPCClusterTransformation, 0)
+};
+
+#endif
index c747493..3eb6a60 100644 (file)
@@ -3,6 +3,7 @@
 
 
 CLASS_HDRS:=   AliHLTTPCTransform.h \
+               AliHLTTPCClusterTransformation.h \
                AliHLTTPCAgent.h \
                AliHLTTPCMemHandler.h \
                AliHLTTPCDataCompressorHelper.h \