]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/global/AliHLTGlobalTrackMatcherComponent.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalTrackMatcherComponent.cxx
index 1c07606f647dc42c47a9d2d87fd67f83bbb35f88..008ae227b4fbe8dda45bbeeeae2fd563ef48e788 100644 (file)
     @brief  Component to match TPC tracks to Calo Clusters
 */
 
-#if __GNUC__>= 3
-using namespace std;
-#endif
-
 #include "AliHLTProcessor.h"
 #include "AliHLTGlobalTrackMatcherComponent.h"
 #include "AliHLTGlobalTrackMatcher.h"
@@ -32,7 +28,14 @@ using namespace std;
 #include "AliHLTGlobalBarrelTrack.h"
 #include "AliHLTCaloClusterDataStruct.h"
 #include "AliHLTCaloClusterReader.h"
+#include "AliCDBEntry.h"
+#include "AliCDBManager.h"
+#include "TGeoManager.h"
+#include "TRefArray.h"
+#include "TString.h"
+#include "TMap.h"
 
+using namespace std;
 
 /** ROOT macro for the implementation of ROOT specific class methods */
 AliHLTGlobalTrackMatcherComponent gAliHLTGlobalTrackMatcherComponent;
@@ -40,6 +43,8 @@ AliHLTGlobalTrackMatcherComponent gAliHLTGlobalTrackMatcherComponent;
 ClassImp(AliHLTGlobalTrackMatcherComponent);
 
 AliHLTGlobalTrackMatcherComponent::AliHLTGlobalTrackMatcherComponent() :
+  fOCDBEntry("HLT/ConfigHLT/GlobalTrackMatcher"), //TODO
+  fMethod(1), //Method 1(PbPb) 2(pp)
   fTrackMatcher(NULL),
   fNEvents(0),
   fBz(-9999999),
@@ -106,10 +111,20 @@ AliHLTComponent* AliHLTGlobalTrackMatcherComponent::Spawn()
 
 int AliHLTGlobalTrackMatcherComponent::DoInit( int argc, const char** argv ) 
 {
+  Int_t iResult=ConfigureFromCDBTObjString(fOCDBEntry); //MARCEL
+    // configure from the command line parameters if specified
+  if (iResult>=0 && argc>0) {
+    iResult=ConfigureFromArgumentString(argc, argv);
+    HLTImportant("Extrapolation Method from argument string:  %d", fMethod);   
+  } else if ( iResult >=0 ) {
+    HLTImportant("Extrapolation Method from OCDB database entry:  %d", fMethod);   
+  } 
+  
+  
   //BALLE TODO, use command line values to initialise matching vaules
  // init
-  Int_t iResult = argc;
+//   Int_t iResult = argc;
+//   iResult = argc;
   
   if(argc > 0){
     HLTWarning("Ignoring all configuration args, starting with: argv %s", argv[0]);
@@ -133,6 +148,20 @@ int AliHLTGlobalTrackMatcherComponent::DoInit( int argc, const char** argv )
     fTrackArray->SetOwner(kFALSE);
   }
 
+  //*** GeoManager ***
+   AliCDBPath path("GRP","Geometry","Data");
+   AliCDBEntry *pEntry = AliCDBManager::Instance()->Get(path);
+   if (pEntry) {
+      if(!gGeoManager) {
+      gGeoManager = (TGeoManager*)pEntry->GetObject();
+      }
+   }
+   else {
+      HLTError("can not fetch object \"%s\" from CDB",path.GetPath().Data());
+   }
+   // ****
+
+
   return iResult; 
 }
   
@@ -163,13 +192,16 @@ int AliHLTGlobalTrackMatcherComponent::DoEvent(const AliHLTComponentEventData& /
   
   if ( GetFirstInputBlock( kAliHLTDataTypeSOR ) || GetFirstInputBlock( kAliHLTDataTypeEOR ) )
     return 0;
-
+  
+  if(!IsDataEvent()){//marcel test
+    return 0;//marcel test
+  }//marcel test
 
   fNEvents++;
 
   //Loop over TPC blocks
   //BALLE TODO check that the tracks in the TObjArray are fine over several blocks
-
+  
    fTrackArray->Clear();
    vector<AliHLTGlobalBarrelTrack> tracks;
    
@@ -185,10 +217,10 @@ int AliHLTGlobalTrackMatcherComponent::DoEvent(const AliHLTComponentEventData& /
      }
     
      //     //Push the TPC block on, without any changes
-     PushBack(pBlock->fPtr, pBlock->fSize, pBlock->fDataType, pBlock->fSpecification);
+     //PushBack(pBlock->fPtr, pBlock->fSize, pBlock->fDataType, pBlock->fSpecification);
 
    }
-
+    
    AliHLTCaloClusterDataStruct * caloClusterStruct;
    //Get the PHOS Clusters
    vector<AliHLTCaloClusterDataStruct*> phosClustersVector;
@@ -206,13 +238,13 @@ int AliHLTGlobalTrackMatcherComponent::DoEvent(const AliHLTComponentEventData& /
        }
      }
    }
-   
 
-   //Get the EMCAL Clusters
+    //Get the EMCAL Clusters
    vector<AliHLTCaloClusterDataStruct*> emcalClustersVector;
    for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeCaloCluster | kAliHLTDataOriginEMCAL); pBlock!=NULL; pBlock=GetNextInputBlock()) {
      AliHLTCaloClusterHeaderStruct *caloClusterHeader = reinterpret_cast<AliHLTCaloClusterHeaderStruct*>(pBlock->fPtr);
      fClusterReader->SetMemory(caloClusterHeader);
+//           HLTInfo("\n EMCAL: estou aqui");//marcel
      if ( (caloClusterHeader->fNClusters) < 0) {
        HLTWarning("Event has negative number of clusters: %d! Very bad for vector resizing", (Int_t) (caloClusterHeader->fNClusters));
        continue;
@@ -223,19 +255,38 @@ int AliHLTGlobalTrackMatcherComponent::DoEvent(const AliHLTComponentEventData& /
        }
      }
    }
-   
-   iResult = fTrackMatcher->Match(fTrackArray, phosClustersVector, emcalClustersVector, fBz);
+
+      iResult = fTrackMatcher->Match(fTrackArray, phosClustersVector, emcalClustersVector, fBz,fMethod); //With Method String
+
 
    //Push the blocks on
    for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeCaloCluster | kAliHLTDataOriginAny); pBlock!=NULL; pBlock=GetNextInputBlock()) {
      PushBack(pBlock->fPtr, pBlock->fSize, pBlock->fDataType, pBlock->fSpecification);
-   }
-
-   fTrackArray->Clear();
+    }
    
+   fTrackArray->Clear();
+
    return iResult;
 }
 
+int AliHLTGlobalTrackMatcherComponent::ScanConfigurationArgument(int argc, const char** argv) {
+  // see header file for class documentation
+  if (argc<=0) return 0;
+  int i=0;
+  TString argument=argv[i];
+
+  // -maxpt
+  if (argument.CompareTo("-method")==0) {
+    if (++i>=argc) return -EPROTO;
+    argument=argv[i];
+    fMethod=argument.Atoi(); // 
+    return 2;
+  }    
+
+// unknown argument
+  return -EINVAL;
+}
+
 // int AliHLTGlobalTrackMatcherComponent::Configure(const char* arguments)
 // {
 //   Int_t iResult = 1;
@@ -247,3 +298,22 @@ int AliHLTGlobalTrackMatcherComponent::DoEvent(const AliHLTComponentEventData& /
 //   Int_t iResult = 1;
 //   return iResult;
 // }
+
+int AliHLTGlobalTrackMatcherComponent::Reconfigure(const char* cdbEntry, const char* /*chainId*/) {
+  // configure from the specified antry or the default one
+  const char* entry=cdbEntry;
+  if (!entry || entry[0]==0) entry=fOCDBEntry;
+
+  return ConfigureFromCDBTObjString(entry);
+}
+
+void AliHLTGlobalTrackMatcherComponent::GetOCDBObjectDescription( TMap* const targetMap) {
+  
+  // Get a list of OCDB object description.
+  if (!targetMap) return;
+  targetMap->Add(new TObjString(fOCDBEntry),
+                new TObjString(Form("Track-Matcher Method OCDB object") ) 
+                );
+}
+
+