#include "AliHLTExternalTrackParam.h"
#include "AliHLTTrackMCLabel.h"
#include "AliHLTCTPData.h"
+#include "AliHLTErrorGuard.h"
#include "AliESDEvent.h"
#include "AliESDtrack.h"
#include "AliESDMuonTrack.h"
#include "AliHLTCaloClusterDataStruct.h"
#include "AliHLTCaloClusterReader.h"
#include "AliESDCaloCluster.h"
+#include "AliESDVZERO.h"
#include "AliHLTGlobalVertexerComponent.h"
/** ROOT macro for the implementation of ROOT specific class methods */
list.push_back(kAliHLTDataTypeESDObject);
list.push_back(kAliHLTDataTypeTObject);
list.push_back(kAliHLTDataTypeGlobalVertexer);
+ list.push_back(kAliHLTDataTypeESDContent);
}
AliHLTComponentDataType AliHLTGlobalEsdConverterComponent::GetOutputDataType()
TString skipObjects=
// "AliESDRun,"
// "AliESDHeader,"
- "AliESDZDC,"
+ // "AliESDZDC,"
"AliESDFMD,"
// "AliESDVZERO,"
// "AliESDTZERO,"
// TODO 2010-07-12 find out if the kITSrefit has to be set as well
// 4) extract TRD tracks and add to ESD
// TODO 2010-07-12 at the moment there is no matching or merging of TPC and TRD tracks
+ // 5) Add Trigger Detectors
+ // VZERO, ZDC
// 1) first read MC information (if present)
std::map<int,int> mcLabelsTPC;
AliHLTFloat32_t *dEdxTPC = 0;
Int_t ndEdxTPC = 0;
for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypedEdx|kAliHLTDataOriginTPC);
- pBlock!=NULL; pBlock=GetNextInputBlock()) {
+ pBlock!=NULL; pBlock=NULL/*GetNextInputBlock() there is only one block*/) {
fBenchmark.AddInput(pBlock->fSize);
dEdxTPC = reinterpret_cast<AliHLTFloat32_t*>( pBlock->fPtr );
- ndEdxTPC = pBlock->fSize / sizeof(AliHLTFloat32_t);
- break;
+ ndEdxTPC = pBlock->fSize / (3*sizeof(AliHLTFloat32_t));
}
// 2) convert the TPC tracks to ESD tracks
iotrack.UpdateTrackParams(&(*element),AliESDtrack::kTPCrefit);
iotrack.SetTPCPoints(points);
if( element->TrackID()<ndEdxTPC ){
- iotrack.SetTPCsignal( dEdxTPC[element->TrackID()], 0, 0 );
+ AliHLTFloat32_t *val = &(dEdxTPC[3*element->TrackID()]);
+ iotrack.SetTPCsignal( val[0], val[1], (UChar_t) val[2] );
//AliTPCseed s;
//s.Set( element->GetX(), element->GetAlpha(),
//element->GetParameter(), element->GetCovariance() );
- //s.SetdEdx( dEdxTPC[element->TrackID()] );
+ //s.SetdEdx( val[0] );
//s.CookPID();
//iotrack.SetTPCpid(s.TPCrPIDs() );
} else {
iAddedDataBlocks++;
}
+ // 5) Add Trigger Detectors
+ // VZERO, ZDC
+
+ // FIXME: the size of all input blocks can be added in one loop
+ for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeESDContent|kAliHLTDataOriginVZERO);
+ pBlock!=NULL; pBlock=GetNextInputBlock()) {
+ fBenchmark.AddInput(pBlock->fSize);
+ }
+
+ for ( const TObject *pObject = GetFirstInputObject(kAliHLTDataTypeESDContent|kAliHLTDataOriginVZERO);
+ pObject != NULL; pObject = GetNextInputObject() ) {
+ AliESDVZERO *esdVZERO = dynamic_cast<AliESDVZERO*>(const_cast<TObject*>( pObject ) );
+ if (esdVZERO) {
+ pESD->SetVZEROData( esdVZERO );
+ break;
+ } else {
+ ALIHLTERRORGUARD(1, "input object of data type %s is not of class AliESDVZERO",
+ DataType2Text(kAliHLTDataTypeESDContent|kAliHLTDataOriginVZERO).c_str());
+ }
+ }
+
+ // FIXME: the size of all input blocks can be added in one loop
+ for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeESDContent|kAliHLTDataOriginZDC);
+ pBlock!=NULL; pBlock=GetNextInputBlock()) {
+ fBenchmark.AddInput(pBlock->fSize);
+ }
+ for ( const TObject *pObject = GetFirstInputObject(kAliHLTDataTypeESDContent|kAliHLTDataOriginZDC);
+ pObject != NULL; pObject = GetNextInputObject() ) {
+ AliESDZDC *esdZDC = dynamic_cast<AliESDZDC*>(const_cast<TObject*>( pObject ) );
+ if (esdZDC) {
+#ifndef HAVE_NOT_ALIZDCRECONSTRUCTOR_r43770
+ pESD->SetZDCData( esdZDC );
+#else
+ ALIHLTERRORGUARD(1, "Processing of ZDC data requires AliRoot r43770m skipping data block of type %s",
+ DataType2Text(kAliHLTDataTypeESDContent|kAliHLTDataOriginZDC).c_str());
+#endif
+ break;
+ } else {
+ ALIHLTERRORGUARD(1, "input object of data type %s is not of class AliESDZDC",
+ DataType2Text(kAliHLTDataTypeESDContent|kAliHLTDataOriginZDC).c_str());
+ }
+ }
+
// Add tracks from MUON.
for( const AliHLTComponentBlockData *i= GetFirstInputBlock(kAliHLTAnyDataType | kAliHLTDataOriginMUON); i!=NULL; i=GetNextInputBlock() ){
fBenchmark.AddInput(i->fSize);