6 #include "AliHLTSystem.h"
7 #include "AliRawReaderMemory.h"
8 #include "AliFMDRawReader.h"
10 #include "AliHLTDataTypes.h"
11 #include "TClonesArray.h"
12 #include "AliHLTFMDReconstructionComponent.h"
13 #include "AliHLTDefinitions.h"
14 #include "AliCDBManager.h"
15 #include "AliFMDParameters.h"
16 #include "AliHLTDataTypes.h"
19 #include "AliGeomManager.h"
20 #include "AliFMDGeometry.h"
24 ClassImp(AliHLTFMDReconstructionComponent)
26 //_____________________________________________________________________
28 AliHLTFMDReconstructionComponent::AliHLTFMDReconstructionComponent()
34 //_____________________________________________________________________
36 AliHLTFMDReconstructionComponent::~AliHLTFMDReconstructionComponent()
38 // see header file for class documentation
41 //_____________________________________________________________________
42 AliHLTFMDReconstructionComponent::AliHLTFMDReconstructor::AliHLTFMDReconstructor()
43 : AliFMDReconstructor()
45 fDiagnostics = kFALSE;
49 //_____________________________________________________________________
50 void AliHLTFMDReconstructionComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
52 list.push_back(kAliHLTDataTypeDDLRaw);
56 //______________________________________________________________________
57 AliHLTComponentDataType AliHLTFMDReconstructionComponent::GetOutputDataType()
59 return kAliHLTDataTypeESDTree;
62 //______________________________________________________________________
63 void AliHLTFMDReconstructionComponent::GetOutputDataSize( unsigned long& constBase, double& inputMultiplier )
70 //______________________________________________________________________
72 AliHLTComponent* AliHLTFMDReconstructionComponent::Spawn()
75 return new AliHLTFMDReconstructionComponent;
78 //______________________________________________________________________
79 int AliHLTFMDReconstructionComponent::DoInit( int argc, const char** argv )
85 if ( !strcmp( argv[i], "run_number" ) ||
86 !strcmp( argv[i], "-run_number" ))
90 HLTError("Missing run_number parameter");
93 fRunNumber = strtoul( argv[i+1], &cpErr, 0 );
96 HLTError("Cannot convert run_number parameter '%s'", argv[i+1] );
99 HLTInfo("Run Number set to %lu %%", fRunNumber );
103 HLTError("Unknown option '%s'", argv[i] );
107 AliLog::EnableDebug(kFALSE);
109 if (GetRunNo() == kAliHLTVoidRunNo) {
110 AliCDBManager* cdb = AliCDBManager::Instance();
111 cdb->SetRun(fRunNumber);
113 AliFMDParameters::Instance()->Init();
115 if (AliGeomManager::GetGeometry() == NULL)
116 AliGeomManager::LoadGeometry();
118 AliFMDGeometry* geo = AliFMDGeometry::Instance();
120 geo->InitTransformations();
125 //______________________________________________________________________
126 int AliHLTFMDReconstructionComponent::DoDeinit()
133 //______________________________________________________________________
134 int AliHLTFMDReconstructionComponent::DoEvent( const AliHLTComponentEventData& evtData,
135 const AliHLTComponentBlockData* blocks,
136 AliHLTComponentTriggerData& /*trigData*/,
137 AliHLTUInt8_t* /*outputPtr*/,
138 AliHLTUInt32_t& size,
139 vector<AliHLTComponentBlockData>& /*outputBlocks*/ )
141 if(GetFirstInputBlock( kAliHLTDataTypeSOR ) || GetFirstInputBlock( kAliHLTDataTypeEOR )){
145 // -- Iterator over Data Blocks --
146 const AliHLTComponentBlockData* iter = NULL;
149 esd.CreateStdContent();
152 //unsigned long totalSize = 0;
153 // Loop over all input blocks in the event
155 AliHLTFMDReconstructor rec;
157 for ( unsigned long n = 0; n < evtData.fBlockCnt; n++ ) {
161 // -- Check for the correct data type
162 if ( iter->fDataType != (kAliHLTDataTypeDDLRaw | kAliHLTDataOriginFMD) )
165 AliRawReaderMemory* reader = new AliRawReaderMemory();
167 reader->SetMemory((UChar_t*) iter->fPtr, iter->fSize );
169 AliHLTUInt32_t spec = iter->fSpecification;
172 for ( Int_t ii = 0; ii < 24 ; ii++ ) {
173 if ( spec & 0x00000001 ) {
180 reader->SetEquipmentID( id );
182 AliFMDRawReader* fmdReader = new AliFMDRawReader(reader,0);
183 TClonesArray* digitArray = new TClonesArray("AliFMDDigit",0);
186 fmdReader->ReadAdcs(digitArray);
187 rec.ReconstructDigits(digitArray);
200 esd.SetFMDData(rec.GetFMDData());
202 iResult=PushBack(&esd, kAliHLTDataTypeESDObject|kAliHLTDataOriginFMD, 0);