#include "AliTPCcalibTracksCuts.h"
#include "AliTPCClusterParam.h"
#include "AliHLTTPCDefinitions.h"
+#include "AliHLTReadoutList.h"
/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTTPCOfflineCalibrationComponent)
{
// get input data type
list.clear();
- list.push_back(kAliHLTDataTypeESDObject|kAliHLTDataOriginTPC/*AliHLTTPCDefinitions::fgkOfflineClustersDataType*/);
+ list.push_back(kAliHLTDataTypeTObjArray|kAliHLTDataOriginTPC/*TObjArray of seeds*/);
}
AliHLTComponentDataType AliHLTTPCOfflineCalibrationComponent::GetOutputDataType()
HLTInfo("ProcessCalibration processing data");
int iResult=0;
- AliESDEvent *pESD =0;
- AliESDfriend* pESDfriend=0;
+ TObjArray *pSeedsArray=0;
int slice, patch;
// calculate specification
- const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeESDObject|kAliHLTDataOriginTPC);
+ const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeTObjArray|kAliHLTDataOriginTPC);
if(!pBlock) {
HLTError("Cannot get first data block 0x%08x ",pBlock);
iResult=-ENOMEM; return iResult;
if (fTPCcalibAlign && fTPCcalibTracksGain && fTPCcalibTracks)
{
- // loop over input data blocks: ESD events
- for (TObject *pObj = (TObject *)GetFirstInputObject(kAliHLTDataTypeESDObject|kAliHLTDataOriginTPC,"ESD",0);
+ // loop over input data blocks: TObjArray of TPCseed
+ for (TObject *pObj = (TObject *)GetFirstInputObject(kAliHLTDataTypeTObjArray|kAliHLTDataOriginTPC,"TObjArray",0);
pObj !=0 && iResult>=0;
pObj = (TObject *)GetNextInputObject(0)) {
- pESD = dynamic_cast<AliESDEvent*>(pObj);
- if (!pESD) continue;
- // get standard ESD content
- pESD->GetStdContent();
-
- HLTInfo("load %d esd tracks from block %s 0x%08x", pESD->GetNumberOfTracks(), DataType2Text(GetDataType(pObj)).c_str(), GetSpecification(pObj));
+ pSeedsArray = dynamic_cast<TObjArray*>(pObj);
+ if (!pSeedsArray) continue;
slice=AliHLTTPCDefinitions::GetMinSliceNr(GetSpecification(pObj));
patch=AliHLTTPCDefinitions::GetMinPatchNr(GetSpecification(pObj));
if(patch < minPatch) minPatch=patch;
if(patch > maxPatch) maxPatch=patch;
- // get ESD fiends
- pESDfriend=static_cast<AliESDfriend*>(pESD->FindListObject("AliESDfriend"));
- if (!pESDfriend) {
- HLTError("Cannot load ESD friends 0x%08x", pESDfriend);
- iResult=-ENOMEM;
- return iResult;
- }
- HLTInfo("load %d esd friend tracks from 0x%08x", pESDfriend->GetNumberOfTracks(), pESDfriend);
-
// get TPC seeds
- Int_t n=pESD->GetNumberOfTracks();
- for (Int_t i=0;i<n;++i) {
- AliESDfriendTrack *friendTrack=pESDfriend->GetTrack(i);
-
- if(!friendTrack) continue;
- HLTInfo("Process calibration on friend track 0x%08x", friendTrack);
-
- TObject *calibObject=0;
- AliTPCseed *seed=0;
- for (Int_t j=0;(calibObject=friendTrack->GetCalibObject(j));++j) {
- if ((seed=dynamic_cast<AliTPCseed*>(calibObject))!=0) break;
- }
- if (seed) {
- HLTInfo("Process calibration on seed 0x%08x", seed);
- fTPCcalibAlign->Process(seed);
- fTPCcalibTracksGain->Process(seed);
- fTPCcalibTracks->Process(seed);
- }
+ Int_t nseed = pSeedsArray->GetEntriesFast();
+ HLTInfo("Number TPC seeds %d",nseed);
+
+ for(Int_t i=0; i<nseed; ++i) {
+ AliTPCseed *seed = (AliTPCseed*)pSeedsArray->UncheckedAt(i);
+ if(!seed) continue;
+ HLTInfo("Process calibration on seed 0x%08x", seed);
+ fTPCcalibAlign->Process(seed);
+ fTPCcalibTracksGain->Process(seed);
+ fTPCcalibTracks->Process(seed);
}
+
// calculate specification from the specification of input data blocks
AliHLTUInt32_t iSpecification = AliHLTTPCDefinitions::EncodeDataSpecification(minSlice, maxSlice, minPatch, maxPatch);
PushBack((TObject*)fTPCcalibTracksGain,AliHLTTPCDefinitions::fgkOfflineCalibTracksGainDataType,iSpecification);
PushBack((TObject*)fTPCcalibTracks,AliHLTTPCDefinitions::fgkOfflineCalibTracksDataType,iSpecification);
+ // reset standard ESD content
+ pSeedsArray->Delete();
+
}// end loop over input objects
} else {
fTPCcalibTracksGain->Analyze();
fTPCcalibTracks->Analyze();
}
- PushToFXS((TObject*)fTPCcalibAlign, "TPC", "TPCcalibAlign") ;
- PushToFXS((TObject*)fTPCcalibTracksGain, "TPC", "TPCcalibTracksGain") ;
- PushToFXS((TObject*)fTPCcalibTracks, "TPC", "TPCcalibTracks") ;
+ static AliHLTReadoutList rdList(AliHLTReadoutList::kTPC);
+ PushToFXS((TObject*)fTPCcalibAlign, "TPC", "TPCcalibAlign", &rdList) ;
+ PushToFXS((TObject*)fTPCcalibTracksGain, "TPC", "TPCcalibTracksGain", &rdList) ;
+ PushToFXS((TObject*)fTPCcalibTracks, "TPC", "TPCcalibTracks", &rdList) ;
return 0;
}