1 #include "AliHLTSystem.h"
2 #include "AliRawReaderMemory.h"
3 #include "AliFMDRawReader.h"
5 #include "AliHLTDataTypes.h"
6 #include "TClonesArray.h"
7 #include "AliHLTFMDReconstructionComponent.h"
8 #include "AliHLTDefinitions.h"
9 #include "AliCDBManager.h"
10 #include "AliFMDParameters.h"
11 #include "AliHLTDataTypes.h"
14 #include "AliGeomManager.h"
15 #include "AliFMDGeometry.h"
21 ClassImp(AliHLTFMDReconstructionComponent)
23 //_____________________________________________________________________
25 AliHLTFMDReconstructionComponent::AliHLTFMDReconstructionComponent()
31 //_____________________________________________________________________
33 AliHLTFMDReconstructionComponent::~AliHLTFMDReconstructionComponent()
35 // see header file for class documentation
38 //_____________________________________________________________________
39 AliHLTFMDReconstructionComponent::AliHLTFMDReconstructor::AliHLTFMDReconstructor()
40 : AliFMDReconstructor()
42 fDiagnostics = kFALSE;
46 //_____________________________________________________________________
47 void AliHLTFMDReconstructionComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
49 list.push_back(kAliHLTDataTypeDDLRaw);
53 //______________________________________________________________________
54 AliHLTComponentDataType AliHLTFMDReconstructionComponent::GetOutputDataType()
56 return kAliHLTDataTypeESDTree;
59 //______________________________________________________________________
60 void AliHLTFMDReconstructionComponent::GetOutputDataSize( unsigned long& constBase, double& inputMultiplier )
67 //______________________________________________________________________
69 AliHLTComponent* AliHLTFMDReconstructionComponent::Spawn()
72 return new AliHLTFMDReconstructionComponent;
75 //______________________________________________________________________
76 int AliHLTFMDReconstructionComponent::DoInit( int argc, const char** argv )
82 if ( !strcmp( argv[i], "run_number" ) ||
83 !strcmp( argv[i], "-run_number" ))
87 HLTError("Missing run_number parameter");
90 fRunNumber = strtoul( argv[i+1], &cpErr, 0 );
93 HLTError("Cannot convert run_number parameter '%s'", argv[i+1] );
96 HLTInfo("Run Number set to %lu %%", fRunNumber );
100 HLTError("Unknown option '%s'", argv[i] );
104 AliLog::EnableDebug(kFALSE);
106 if (GetRunNo() == kAliHLTVoidRunNo) {
107 AliCDBManager* cdb = AliCDBManager::Instance();
108 cdb->SetRun(fRunNumber);
110 AliFMDParameters::Instance()->Init();
112 if (AliGeomManager::GetGeometry() == NULL)
113 AliGeomManager::LoadGeometry();
115 AliFMDGeometry* geo = AliFMDGeometry::Instance();
117 geo->InitTransformations();
122 //______________________________________________________________________
123 int AliHLTFMDReconstructionComponent::DoDeinit()
130 //______________________________________________________________________
131 int AliHLTFMDReconstructionComponent::DoEvent( const AliHLTComponentEventData& evtData,
132 const AliHLTComponentBlockData* blocks,
133 AliHLTComponentTriggerData& /*trigData*/,
134 AliHLTUInt8_t* /*outputPtr*/,
135 AliHLTUInt32_t& size,
136 vector<AliHLTComponentBlockData>& /*outputBlocks*/ )
138 if(GetFirstInputBlock( kAliHLTDataTypeSOR ) || GetFirstInputBlock( kAliHLTDataTypeEOR )){
142 // -- Iterator over Data Blocks --
143 const AliHLTComponentBlockData* iter = NULL;
146 esd.CreateStdContent();
149 //unsigned long totalSize = 0;
150 // Loop over all input blocks in the event
152 AliHLTFMDReconstructor rec;
154 for ( unsigned long n = 0; n < evtData.fBlockCnt; n++ ) {
158 // -- Check for the correct data type
159 if ( iter->fDataType != (kAliHLTDataTypeDDLRaw | kAliHLTDataOriginFMD) )
162 AliRawReaderMemory* reader = new AliRawReaderMemory();
164 reader->SetMemory((UChar_t*) iter->fPtr, iter->fSize );
166 AliHLTUInt32_t spec = iter->fSpecification;
169 for ( Int_t ii = 0; ii < 24 ; ii++ ) {
170 if ( spec & 0x00000001 ) {
177 reader->SetEquipmentID( id );
179 AliFMDRawReader* fmdReader = new AliFMDRawReader(reader,0);
180 TClonesArray* digitArray = new TClonesArray("AliFMDDigit",0);
183 fmdReader->ReadAdcs(digitArray);
184 rec.ReconstructDigits(digitArray);
197 esd.SetFMDData(rec.GetFMDData());
199 iResult=PushBack(&esd, kAliHLTDataTypeESDObject|kAliHLTDataOriginFMD, 0);