X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=HLT%2Fglobal%2FAliHLTGlobalTrackMatcherComponent.cxx;h=008ae227b4fbe8dda45bbeeeae2fd563ef48e788;hb=18fa2f067e109bb40324d056edb27dde53b56e8d;hp=1c07606f647dc42c47a9d2d87fd67f83bbb35f88;hpb=e5b4e619c4f89b907ed5badab65859219eb635f7;p=u%2Fmrichter%2FAliRoot.git diff --git a/HLT/global/AliHLTGlobalTrackMatcherComponent.cxx b/HLT/global/AliHLTGlobalTrackMatcherComponent.cxx index 1c07606f647..008ae227b4f 100644 --- a/HLT/global/AliHLTGlobalTrackMatcherComponent.cxx +++ b/HLT/global/AliHLTGlobalTrackMatcherComponent.cxx @@ -19,10 +19,6 @@ @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 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 phosClustersVector; @@ -206,13 +238,13 @@ int AliHLTGlobalTrackMatcherComponent::DoEvent(const AliHLTComponentEventData& / } } } - - //Get the EMCAL Clusters + //Get the EMCAL Clusters vector emcalClustersVector; for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeCaloCluster | kAliHLTDataOriginEMCAL); pBlock!=NULL; pBlock=GetNextInputBlock()) { AliHLTCaloClusterHeaderStruct *caloClusterHeader = reinterpret_cast(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") ) + ); +} + +