]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/offline/AliHLTTPCOfflineCalibrationComponent.cxx
Major update required to handle old and new AliHLTEventDDL structures within HLT...
[u/mrichter/AliRoot.git] / HLT / TPCLib / offline / AliHLTTPCOfflineCalibrationComponent.cxx
index d5ae6faee0317fbf63ed1150a72d60969e349b5d..607a8e4b4b4a1b0c33c8f0ea0656d8625dab62ef 100644 (file)
@@ -38,6 +38,7 @@
 #include "AliTPCcalibTracksCuts.h"
 #include "AliTPCClusterParam.h"
 #include "AliHLTTPCDefinitions.h"
+#include "AliHLTReadoutList.h"
 
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTTPCOfflineCalibrationComponent)
@@ -72,7 +73,7 @@ void AliHLTTPCOfflineCalibrationComponent::GetInputDataTypes( vector<AliHLTCompo
 {
   // get input data type
   list.clear();
-  list.push_back(kAliHLTDataTypeESDObject|kAliHLTDataOriginTPC/*AliHLTTPCDefinitions::fgkOfflineClustersDataType*/);
+  list.push_back(kAliHLTDataTypeTObjArray|kAliHLTDataOriginTPC/*TObjArray of seeds*/);
 }
 
 AliHLTComponentDataType AliHLTTPCOfflineCalibrationComponent::GetOutputDataType()
@@ -179,12 +180,11 @@ int AliHLTTPCOfflineCalibrationComponent::ProcessCalibration(const AliHLTCompone
   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;
@@ -196,17 +196,13 @@ int AliHLTTPCOfflineCalibrationComponent::ProcessCalibration(const AliHLTCompone
  
   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));
@@ -216,35 +212,19 @@ int AliHLTTPCOfflineCalibrationComponent::ProcessCalibration(const AliHLTCompone
       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);
 
@@ -253,6 +233,9 @@ int AliHLTTPCOfflineCalibrationComponent::ProcessCalibration(const AliHLTCompone
        PushBack((TObject*)fTPCcalibTracksGain,AliHLTTPCDefinitions::fgkOfflineCalibTracksGainDataType,iSpecification);
        PushBack((TObject*)fTPCcalibTracks,AliHLTTPCDefinitions::fgkOfflineCalibTracksDataType,iSpecification);
 
+      // reset standard ESD content    
+      pSeedsArray->Delete();
+
     }// end loop over input objects
     
   } else {
@@ -272,9 +255,10 @@ Int_t AliHLTTPCOfflineCalibrationComponent::ShipDataToFXS( const AliHLTComponent
       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;
 }