extra debug output
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterTransformation.cxx
CommitLineData
0bbbbd17 1// $Id: AliHLTTPCClusterTransformation.cxx 41244 2010-05-14 08:13:35Z kkanaki $
2
3//**************************************************************************
4//* This file is property of and copyright by the ALICE HLT Project *
5//* ALICE Experiment at CERN, All rights reserved. *
6//* *
7//* Primary Authors: Kalliopi Kanaki <Kalliopi.Kanaki@ift.uib.no> *
8//* for The ALICE HLT Project. *
9//* *
10//* Permission to use, copy, modify and distribute this software and its *
11//* documentation strictly for non-commercial purposes is hereby granted *
12//* without fee, provided that the above copyright notice appears in all *
13//* copies and that both the copyright notice and this permission notice *
14//* appear in the supporting documentation. The authors make no claims *
15//* about the suitability of this software for any purpose. It is *
16//* provided "as is" without express or implied warranty. *
17//**************************************************************************
18
19/** @file AliHLTTPCClusterTransformation.cxx
20 @author Kalliopi Kanaki, Sergey Gorbubnov
21 @date
22 @brief
23*/
24
25
26#include "AliHLTTPCClusterTransformation.h"
27#include "AliHLTTPCTransform.h"
dc9f7928 28#include "AliHLTTPCFastTransform.h"
0bbbbd17 29
750126e1 30#include "AliCDBPath.h"
31#include "AliCDBManager.h"
9eb867b1 32#include "AliCDBEntry.h"
33#include "AliGRPObject.h"
0bbbbd17 34#include "AliTPCcalibDB.h"
35#include "AliTPCTransform.h"
0bbbbd17 36#include "AliTPCParam.h"
67e7ad4f 37#include "AliTPCRecoParam.h"
8f2bd9bd 38#include "AliGeomManager.h"
9eb867b1 39#include "AliRunInfo.h"
40#include "AliEventInfo.h"
41#include "AliRawEventHeaderBase.h"
48fd12f9 42#include <iostream>
43#include <iomanip>
44
45using namespace std;
0bbbbd17 46
47ClassImp(AliHLTTPCClusterTransformation) //ROOT macro for the implementation of ROOT specific class methods
48
96122515 49AliRecoParam AliHLTTPCClusterTransformation::fOfflineRecoParam;
50
0bbbbd17 51AliHLTTPCClusterTransformation::AliHLTTPCClusterTransformation()
52:
96122515 53 fError(),
54 fFastTransform()
0bbbbd17 55{
56 // see header file for class documentation
57 // or
58 // refer to README to build package
59 // or
60 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
0bbbbd17 61}
96122515 62
0bbbbd17 63AliHLTTPCClusterTransformation::~AliHLTTPCClusterTransformation()
64{
65 // see header file for class documentation
0bbbbd17 66}
67
68
96122515 69int AliHLTTPCClusterTransformation::Init( double FieldBz, Long_t TimeStamp )
0bbbbd17 70{
71 // Initialisation
8bb89201 72
8f2bd9bd 73 if(!AliGeomManager::GetGeometry()){
9eb867b1 74 AliGeomManager::LoadGeometry();
8f2bd9bd 75 }
0bbbbd17 76
96122515 77 if(!AliGeomManager::GetGeometry()) return Error(-1,"AliHLTTPCClusterTransformation::Init: Can not initialise geometry");
9eb867b1 78
96122515 79 AliTPCcalibDB* pCalib=AliTPCcalibDB::Instance();
80
81 if(!pCalib ) return Error(-2,"AliHLTTPCClusterTransformation::Init: Calibration not found");
9eb867b1 82
96122515 83 pCalib->SetExBField(FieldBz);
84
85 if( !pCalib->GetTransform() ) return Error(-3,"AliHLTTPCClusterTransformation::Init: No TPC transformation found");
9eb867b1 86
87 // -- Get AliRunInfo variables
88
89 AliGRPObject tmpGRP, *pGRP=0;
90
96122515 91 AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
92
93 if(!entry) return Error(-4,"AliHLTTPCClusterTransformation::Init: No GRP object found in data base");
9eb867b1 94
95 {
96 TMap* m = dynamic_cast<TMap*>(entry->GetObject()); // old GRP entry
97
98 if (m) {
99 //cout<<"Found a TMap in GRP/GRP/Data, converting it into an AliGRPObject"<<endl;
100 m->Print();
101 pGRP = &tmpGRP;
102 pGRP->ReadValuesFromMap(m);
103 }
104 else {
105 //cout<<"Found an AliGRPObject in GRP/GRP/Data, reading it"<<endl;
106 pGRP = dynamic_cast<AliGRPObject*>(entry->GetObject()); // new GRP entry
107 }
108 }
96122515 109
9eb867b1 110 if( !pGRP ){
96122515 111 return Error(-5,"AliHLTTPCClusterTransformation::Init: Unknown format of the GRP object in data base");
9eb867b1 112 }
113
114 AliRunInfo runInfo(pGRP->GetLHCState(),pGRP->GetBeamType(),pGRP->GetBeamEnergy(),pGRP->GetRunType(),pGRP->GetDetectorMask());
115 AliEventInfo evInfo;
116 evInfo.SetEventType(AliRawEventHeaderBase::kPhysicsEvent);
96122515 117
118 entry=AliCDBManager::Instance()->Get("TPC/Calib/RecoParam");
119
120 if(!entry) return Error(-6,"AliHLTTPCClusterTransformation::Init: No TPC reco param entry found in data base");
121
122 TObject *recoParamObj = entry->GetObject();
123 if(!recoParamObj) return Error(-7,"AliHLTTPCClusterTransformation::Init: Empty TPC reco param entry in data base");
124
125 if (dynamic_cast<TObjArray*>(recoParamObj)) {
126 //cout<<"\n\nSet reco param from AliHLTTPCClusterTransformation: TObjArray found \n"<<endl;
8bb89201 127 TObjArray *copy = (TObjArray*)( static_cast<TObjArray*>(recoParamObj)->Clone() );
128 fOfflineRecoParam.AddDetRecoParamArray(1,copy);
96122515 129 }
130 else if (dynamic_cast<AliDetectorRecoParam*>(recoParamObj)) {
131 //cout<<"\n\nSet reco param from AliHLTTPCClusterTransformation: AliDetectorRecoParam found \n"<<endl;
8bb89201 132 AliDetectorRecoParam *copy = (AliDetectorRecoParam*)static_cast<AliDetectorRecoParam*>(recoParamObj)->Clone();
133 fOfflineRecoParam.AddDetRecoParam(1,copy);
134 } else {
96122515 135 return Error(-8,"AliHLTTPCClusterTransformation::Init: Unknown format of the TPC Reco Param entry in the data base");
136 }
137
9eb867b1 138
96122515 139 fOfflineRecoParam.SetEventSpecie(&runInfo, evInfo, 0);
9eb867b1 140
9eb867b1 141 //
750126e1 142
96122515 143 AliTPCRecoParam* recParam = (AliTPCRecoParam*)fOfflineRecoParam.GetDetRecoParam(1);
0bbbbd17 144
96122515 145 if( !recParam ) return Error(-9,"AliHLTTPCClusterTransformation::Init: No TPC Reco Param entry found for the given event specification");
85b28c8f 146
96122515 147
148 pCalib->GetTransform()->SetCurrentRecoParam(recParam);
9eb867b1 149
96122515 150 // set current time stamp and initialize the fast transformation
96122515 151 int err = fFastTransform.Init( pCalib->GetTransform(), TimeStamp );
8bb89201 152
96122515 153 if( err!=0 ){
154 return Error(-10,Form( "AliHLTTPCClusterTransformation::Init: Initialisation of Fast Transformation failed with error %d :%s",err,fFastTransform.GetLastError()) );
155 }
9eb867b1 156
0bbbbd17 157 return 0;
158}
159
96122515 160Bool_t AliHLTTPCClusterTransformation::IsInitialised() const
0bbbbd17 161{
96122515 162 // Is the transformation initialised
163 return fFastTransform.IsInitialised();
0bbbbd17 164}
165
96122515 166void AliHLTTPCClusterTransformation::DeInit()
0bbbbd17 167{
96122515 168 // Deinitialisation
169 fFastTransform.DeInit();
0bbbbd17 170}
48fd12f9 171
96122515 172Int_t AliHLTTPCClusterTransformation::SetCurrentTimeStamp( Long_t TimeStamp )
48fd12f9 173{
96122515 174 // Set the current time stamp
48fd12f9 175
96122515 176 AliTPCRecoParam* recParam = (AliTPCRecoParam*)fOfflineRecoParam.GetDetRecoParam(1);
177 if( !recParam ) return Error(-1,"AliHLTTPCClusterTransformation::SetCurrentTimeStamp: No TPC Reco Param entry found");
48fd12f9 178
96122515 179 AliTPCcalibDB* pCalib=AliTPCcalibDB::Instance();
180 if(!pCalib ) return Error(-2,"AliHLTTPCClusterTransformation::Init: Calibration not found");
181
182 if( !pCalib->GetTransform() ) return Error(-3,"AliHLTTPCClusterTransformation::SetCurrentTimeStamp: No TPC transformation found");
183
184 pCalib->GetTransform()->SetCurrentRecoParam(recParam);
48fd12f9 185
96122515 186 int err = fFastTransform.SetCurrentTimeStamp( TimeStamp );
187 if( err!=0 ){
188 return Error(-4,Form( "AliHLTTPCClusterTransformation::SetCurrentTimeStamp: SetCurrentTimeStamp to the Fast Transformation failed with error %d :%s",err,fFastTransform.GetLastError()) );
48fd12f9 189 }
96122515 190 return 0;
48fd12f9 191}
192
193void AliHLTTPCClusterTransformation::Print(const char* /*option*/) const
194{
195 // print info
96122515 196 fFastTransform.Print();
48fd12f9 197}
3b65a731 198
199
200Int_t AliHLTTPCClusterTransformation::GetSize() const
201{
202 // total size of the object
203 int size = sizeof(AliHLTTPCClusterTransformation) - sizeof(AliHLTTPCFastTransform) + fFastTransform.GetSize();
204 return size;
205}