]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TRD/AliHLTTRDClusterizerComponent.cxx
reverting r43169, to be committed with corrected log message
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDClusterizerComponent.cxx
index 60e04dfc83ee09e9917513b2beef1f05e85fdaf4..4924041d3908a7333de2bcb6518e1bc5c2d359de 100644 (file)
@@ -39,6 +39,7 @@ using namespace std;
 #include "AliHLTTRDClusterizerComponent.h"
 #include "AliHLTTRDDefinitions.h"
 #include "AliHLTTRDClusterizer.h"
+#include "AliHLTTRDUtils.h"
 
 #include "AliGeomManager.h"
 #include "AliTRDReconstructor.h"
@@ -62,9 +63,6 @@ using namespace std;
 #include <cerrno>
 #include <string>
 
-#include "AliTRDrawStream.h"
-#include "AliTRDrawFastStream.h"
-
 ClassImp(AliHLTTRDClusterizerComponent)
    
 AliHLTTRDClusterizerComponent::AliHLTTRDClusterizerComponent()
@@ -209,9 +207,16 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD
 {
   // Process an event
 
+#ifdef HAVE_VALGRIND_CALLGRIND_H
   if (evtData.fEventID == 10)
     CALLGRIND_START_INSTRUMENTATION;
 
+  if(GetFirstInputBlock(kAliHLTDataTypeEOR))
+    CALLGRIND_STOP_INSTRUMENTATION;
+#endif
+
+  if(!IsDataEvent())return 0;
+
   HLTDebug( "NofBlocks %i", evtData.fBlockCnt );
   // Process an event
   AliHLTUInt32_t totalSize = 0, offset = 0;
@@ -238,8 +243,6 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD
                    evtData.fEventID, evtData.fEventID, 
                    DataType2Text(inputDataType).c_str(), 
                    DataType2Text(expectedDataType).c_str());
-         if(block.fDataType == kAliHLTDataTypeEOR)
-           CALLGRIND_STOP_INSTRUMENTATION;
          continue;
        }
       else 
@@ -265,17 +268,9 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD
 
       AliHLTUInt32_t spec = block.fSpecification;
       
-      Int_t id = 1024;
-      
-      for ( Int_t ii = 0; ii < 18 ; ii++ ) {
-       if ( spec & 0x1 ) {
-         id += ii;
-         break;
-       }
-       spec = spec >> 1 ;
-      }
+      Int_t id = AliHLTTRDUtils::GetSM(spec) + 1024;
 
-      fMemReader->SetEquipmentID( id ); 
+      fMemReader->SetEquipmentID(id);
       
       fClusterizer->SetMemBlock(outputPtr+offset);
       Bool_t bclustered = fClusterizer->Raw2ClustersChamber(fMemReader);
@@ -353,8 +348,15 @@ int AliHLTTRDClusterizerComponent::DoEvent( const AliHLTComponentEventData& evtD
   return 0;
 }
 
-void AliHLTTRDClusterizerComponent::PrintObject( TClonesArray* inClustersArray)
+void AliHLTTRDClusterizerComponent::PrintObject(
+#ifdef __DEBUG
+               TClonesArray* inClustersArray
+#else
+               TClonesArray*
+#endif
+       )
 {
+#ifdef __DEBUG
   AliTRDcluster* cluster=0x0;
   
   for (Int_t i=0; i < inClustersArray->GetEntriesFast(); i++){
@@ -364,7 +366,7 @@ void AliHLTTRDClusterizerComponent::PrintObject( TClonesArray* inClustersArray)
     HLTDebug("  Detector = %i, Amplitude = %f, Center = %f", cluster->GetDetector(), cluster->GetQ(), cluster->GetCenter());
     HLTDebug("  LocalTimeBin =  %i; NPads = %i; maskedPosition: %s, status: %s", cluster->GetLocalTimeBin(), cluster->GetNPads(),cluster->GetPadMaskedPosition(),cluster->GetPadMaskedPosition());
   }
-  
+#endif
 }
 
 int AliHLTTRDClusterizerComponent::Configure(const char* arguments){
@@ -581,15 +583,31 @@ int AliHLTTRDClusterizerComponent::SetParams()
     HLTInfo("RecoParam already set!");
   }else{
     if(fRecoParamType == 0){
-      HLTDebug("Low flux params init.");
-      fRecoParam = AliTRDrecoParam::GetLowFluxParam();
+#ifndef HAVE_NOT_ALITRD_RECOPARAM_r41621
+      if(fHLTflag){
+       HLTInfo("Low flux HLT params init.");
+       fRecoParam = AliTRDrecoParam::GetLowFluxHLTParam();
+      }else
+#endif
+       {
+         HLTInfo("Low flux params init.");
+         fRecoParam = AliTRDrecoParam::GetLowFluxParam();
+       }
     }
     if(fRecoParamType == 1){
-      HLTDebug("High flux params init.");
-      fRecoParam = AliTRDrecoParam::GetHighFluxParam();
+#ifndef HAVE_NOT_ALITRD_RECOPARAM_r41621
+      if(fHLTflag){
+       HLTInfo("High flux HLT params init.");
+       fRecoParam = AliTRDrecoParam::GetHighFluxHLTParam();
+      }else
+#endif
+       {
+         HLTInfo("High flux params init.");
+         fRecoParam = AliTRDrecoParam::GetHighFluxParam();
+       }
     }
     if(fRecoParamType == 2){
-      HLTDebug("Cosmic Test params init.");
+      HLTInfo("Cosmic Test params init.");
       fRecoParam = AliTRDrecoParam::GetCosmicTestParam();
     }
   }
@@ -600,32 +618,33 @@ int AliHLTTRDClusterizerComponent::SetParams()
       return -EINVAL;
     }
 
-  // backward compatibility to AliTRDrecoParam < r34995
-# ifndef HAVE_NOT_ALITRDRECOPARAM_r34995
-#   define AliTRDRecoParamSetTailCancelation(b) fRecoParam->SetTailCancelation(b)
-#   define AliTRDRecoParamSetGAUS(b) fRecoParam->SetGAUS(b)
-#   define AliTRDRecoParamSetLUT(b) fRecoParam->SetLUT(b)
-# else
-#   define AliTRDRecoParamSetTailCancelation(b) fRecoParam->SetTailCancelation()
-#   define AliTRDRecoParamSetGAUS(b) fRecoParam->SetGAUS()
-#   define AliTRDRecoParamSetLUT(b) fRecoParam->SetLUT()
-# endif
-
   if(fTC){fRecoParam->SetTailCancelation(kTRUE); HLTDebug("Enableing Tail Cancelation"); }
   else{fRecoParam->SetTailCancelation(kFALSE); HLTDebug("Disableing Tail Cancelation"); }
 
   switch(fyPosMethod){
-  case 0: AliTRDRecoParamSetGAUS(kFALSE); AliTRDRecoParamSetLUT(kFALSE); break;
-  case 1: AliTRDRecoParamSetGAUS(kFALSE); AliTRDRecoParamSetLUT(kTRUE); break;
-  case 2: AliTRDRecoParamSetGAUS(kTRUE); AliTRDRecoParamSetLUT(kFALSE); break;
+  case 0: fRecoParam->SetGAUS(kFALSE); fRecoParam->SetLUT(kFALSE); break;
+  case 1: fRecoParam->SetGAUS(kFALSE); fRecoParam->SetLUT(kTRUE); break;
+  case 2: fRecoParam->SetGAUS(kTRUE); fRecoParam->SetLUT(kFALSE); break;
   }
 
   fRecoParam->SetStreamLevel(AliTRDrecoParam::kClusterizer, 0);
   fReconstructor->SetRecoParam(fRecoParam);
 
+  if(!fClusterizer){
+    fClusterizer = new AliHLTTRDClusterizer("TRDCclusterizer", "TRDCclusterizer");  
+    HLTDebug("TRDClusterizer at 0x%x", fClusterizer);
+  }
+
   TString recoOptions="!cw";
-  if(fHLTflag)
+  if(fHLTflag){
     recoOptions += ",hlt";
+    
+    // we transfer clusters that do no contain the XYZ coodrinates (AliHLTTRDCluster),
+    // thus this coordinate transformation ist useless
+#ifndef HAVE_NOT_ALITRD_CLUSTERIZER_r42837
+    fClusterizer->SetSkipTransform();
+#endif
+  }
   if(fProcessTracklets) recoOptions += ",tp";
   else  recoOptions += ",!tp";
 
@@ -650,16 +669,20 @@ int AliHLTTRDClusterizerComponent::SetParams()
       HLTDebug("Data type expected is EXPERIMENT!");
     }
 
-  if (fHLTstreamer)
-    {
+#ifndef HAVE_NOT_ALITRD_RAWSTREAM_r39608
+  if(fHLTstreamer){
+    AliTRDrawStreamBase::SetRawStreamVersion("default");
+    HLTDebug("fast rawstreamer used");
+  }else{
+    AliTRDrawStreamBase::SetRawStreamVersion("FAST");
+    HLTDebug("old rawstreamer used");
+  }
+#else
+  if(fHLTstreamer){
       AliTRDrawStreamBase::SetRawStreamVersion("FAST");
       HLTDebug("fast rawstreamer used");  
     }
-
-  if(!fClusterizer){
-    fClusterizer = new AliHLTTRDClusterizer("TRDCclusterizer", "TRDCclusterizer");  
-    HLTDebug("TRDClusterizer at 0x%x", fClusterizer);
-  }
+#endif
 
   fClusterizer->SetRawVersion(fRawDataVersion);
 
@@ -695,3 +718,19 @@ int AliHLTTRDClusterizerComponent::Reconfigure(const char* cdbEntry, const char*
 
   return iResult;
 }
+
+void AliHLTTRDClusterizerComponent::GetOCDBObjectDescription(TMap* const targetMap){
+  // Get a list of OCDB object description needed for the particular component
+  if (!targetMap) return;
+  targetMap->Add(new TObjString("HLT/ConfigTRD/ClusterizerComponent"), new TObjString("component arguments"));
+  targetMap->Add(new TObjString("TRD/Calib/ChamberGainFactor"), new TObjString("gain factor of chambers"));
+  targetMap->Add(new TObjString("TRD/Calib/ChamberT0"), new TObjString("T0 of chambers"));
+  targetMap->Add(new TObjString("TRD/Calib/ChamberVdrift"), new TObjString("drift velocity of chambers"));
+  targetMap->Add(new TObjString("TRD/Calib/DetNoise"), new TObjString("noise of chambers"));
+  targetMap->Add(new TObjString("TRD/Calib/LocalGainFactor"), new TObjString("per pad gain factor"));
+  targetMap->Add(new TObjString("TRD/Calib/LocalT0"), new TObjString("per pad T0"));
+  targetMap->Add(new TObjString("TRD/Calib/LocalVdrift"), new TObjString("per pad drift velocity"));
+  targetMap->Add(new TObjString("TRD/Calib/PadNoise"), new TObjString("per pad noise"));
+  targetMap->Add(new TObjString("TRD/Calib/PadStatus"), new TObjString("pad status"));
+  targetMap->Add(new TObjString("TRD/Calib/PRFWidth"), new TObjString("pad response function"));
+}