]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/global/AliHLTGlobalEsdConverterComponent.cxx
ALIROOT-5433 Transition to CDHv3 in HLT
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalEsdConverterComponent.cxx
index 1adddb2a90d4f14e72ffe3abbba77d92f852d6be..3e5e15ff2ea2ec5968819749b0b38e31cd1ee1b6 100644 (file)
@@ -38,6 +38,7 @@
 #include "AliESDEvent.h"
 #include "AliESDtrack.h"
 #include "AliESDMuonTrack.h"
+#include "AliESDMuonCluster.h"
 #include "AliCDBEntry.h"
 #include "AliCDBManager.h"
 #include "AliPID.h"
@@ -312,12 +313,19 @@ int AliHLTGlobalEsdConverterComponent::DoEvent(const AliHLTComponentEventData& /
 
   const AliHLTCTPData* pCTPData=CTPData();
   if (pCTPData) {
-    AliHLTUInt64_t mask=pCTPData->ActiveTriggers(trigData);
+    AliHLTTriggerMask_t mask=pCTPData->ActiveTriggers(trigData);
     for (int index=0; index<gkNCTPTriggerClasses; index++) {
-      if ((mask&((AliHLTUInt64_t)0x1<<index)) == 0) continue;
+      if ((mask&(AliHLTTriggerMask_t(0x1)<<index)) == 0) continue;
       pESD->SetTriggerClass(pCTPData->Name(index), index);
     }
-    pESD->SetTriggerMask(mask);
+    //first 50 triggers
+    AliHLTTriggerMask_t mask50;
+    mask50.set(); // set all bits
+    mask50 >>= 50; // shift 50 right
+    pESD->SetTriggerMask((mask&mask50).to_ulong());
+    /* next 50, to be implemented 
+    pESD->SetTriggerMaskNext50((mask>>50).to_ulong());
+    */
   }
 
   TTree* pTree = NULL;
@@ -461,10 +469,10 @@ int AliHLTGlobalEsdConverterComponent::ProcessBlocks(TTree* pTree, AliESDEvent*
       for (vector<AliHLTGlobalBarrelTrack>::iterator element=tracks.begin();
           element!=tracks.end(); element++) {
        Float_t points[4] = {
-         element->GetX(),
-         element->GetY(),
-         element->GetLastPointX(),
-         element->GetLastPointY()
+         static_cast<Float_t>(element->GetX()),
+         static_cast<Float_t>(element->GetY()),
+         static_cast<Float_t>(element->GetLastPointX()),
+         static_cast<Float_t>(element->GetLastPointY())
        };
 
        Int_t mcLabel = -1;
@@ -775,7 +783,7 @@ int AliHLTGlobalEsdConverterComponent::ProcessBlocks(TTree* pTree, AliESDEvent*
     }
   }
 
-  // Add tracks from MUON.
+  // Add tracks and clusters from MUON.
   for( const AliHLTComponentBlockData *i= GetFirstInputBlock(kAliHLTAnyDataType | kAliHLTDataOriginMUON); i!=NULL; i=GetNextInputBlock() ){
     fBenchmark.AddInput(i->fSize);
   }
@@ -786,6 +794,7 @@ int AliHLTGlobalEsdConverterComponent::ProcessBlocks(TTree* pTree, AliESDEvent*
       )
   {
     const TClonesArray* tracklist = NULL;
+    const TClonesArray* clusterlist = NULL;
     if (obj->IsA() == AliESDEvent::Class())
     {
       const AliESDEvent* event = static_cast<const AliESDEvent*>(obj);
@@ -793,31 +802,59 @@ int AliHLTGlobalEsdConverterComponent::ProcessBlocks(TTree* pTree, AliESDEvent*
       if (event->GetList() == NULL) continue;
       tracklist = dynamic_cast<const TClonesArray*>(event->GetList()->FindObject("MuonTracks"));
       if (tracklist == NULL) continue;
+      clusterlist = dynamic_cast<const TClonesArray*>(event->GetList()->FindObject("MuonClusters"));
+      if (clusterlist == NULL) continue;
     }
     else if (obj->IsA() == TClonesArray::Class())
     {
-      tracklist = static_cast<const TClonesArray*>(obj);
-      HLTDebug("Received a MUON TClonesArray of tracks with specification: 0x%X", GetSpecification(obj));
+      if (!strcmp(obj->GetName(), "MuonTracks")) {
+       tracklist = static_cast<const TClonesArray*>(obj);
+       HLTDebug("Received a MUON TClonesArray of tracks with specification: 0x%X", GetSpecification(obj));
+      } else {
+       clusterlist = static_cast<const TClonesArray*>(obj);
+       HLTDebug("Received a MUON TClonesArray of clusters with specification: 0x%X", GetSpecification(obj));
+      }
     }
     else
     {
       // Cannot handle this object type.
       continue;
     }
-    HLTDebug("Received %d MUON tracks.", tracklist->GetEntriesFast());
-    if (tracklist->GetEntriesFast() > 0)
-    {
-      const AliESDMuonTrack* track = dynamic_cast<const AliESDMuonTrack*>(tracklist->UncheckedAt(0));
-      if (track == NULL)
+    // copy tracks
+    if (tracklist) {
+      HLTDebug("Received %d MUON tracks.", tracklist->GetEntriesFast());
+      if (tracklist->GetEntriesFast() > 0)
+      {
+       const AliESDMuonTrack* track = dynamic_cast<const AliESDMuonTrack*>(tracklist->UncheckedAt(0));
+       if (track == NULL)
+       {
+         HLTError(Form("%s from MUON does not contain AliESDMuonTrack objects.", obj->ClassName()));
+         continue;
+       }
+      }
+      for (Int_t i = 0; i < tracklist->GetEntriesFast(); ++i)
       {
-        HLTError(Form("%s from MUON does not contain AliESDMuonTrack objects.", obj->ClassName()));
-        continue;
+       AliESDMuonTrack* track = pESD->NewMuonTrack();
+       *track = *(static_cast<const AliESDMuonTrack*>(tracklist->UncheckedAt(i)));
       }
     }
-    for (Int_t i = 0; i < tracklist->GetEntriesFast(); ++i)
-    {
-      const AliESDMuonTrack* track = static_cast<const AliESDMuonTrack*>(tracklist->UncheckedAt(i));
-      pESD->AddMuonTrack(track);
+    // copy clusters
+    if (clusterlist) {
+      HLTDebug("Received %d MUON clusters.", clusterlist->GetEntriesFast());
+      if (clusterlist->GetEntriesFast() > 0)
+      {
+       const AliESDMuonCluster* cluster = dynamic_cast<const AliESDMuonCluster*>(clusterlist->UncheckedAt(0));
+       if (cluster == NULL)
+       {
+         HLTError(Form("%s from MUON does not contain AliESDMuonCluster objects.", obj->ClassName()));
+         continue;
+       }
+      }
+      for (Int_t i = 0; i < clusterlist->GetEntriesFast(); ++i)
+      {
+       AliESDMuonCluster* cluster = pESD->NewMuonCluster();
+       *cluster = *(static_cast<const AliESDMuonCluster*>(clusterlist->UncheckedAt(i)));
+      }
     }
   }