Flat esd friend added
authorsgorbuno <Sergey.Gorbunov@cern.ch>
Wed, 9 Jul 2014 13:04:03 +0000 (15:04 +0200)
committersgorbuno <Sergey.Gorbunov@cern.ch>
Wed, 9 Jul 2014 13:04:03 +0000 (15:04 +0200)
HLT/CMakelibAliHLTGlobal.pkg
HLT/global/AliFlatESDFriend.cxx [new file with mode: 0644]
HLT/global/AliFlatESDFriend.h [new file with mode: 0644]
HLT/global/AliFlatESDFriendTrack.cxx [new file with mode: 0644]
HLT/global/AliFlatESDFriendTrack.h [new file with mode: 0644]
HLT/global/AliHLTGlobalAgent.cxx
HLT/global/AliHLTGlobalFlatEsdTestComponent.cxx [new file with mode: 0644]
HLT/global/AliHLTGlobalFlatEsdTestComponent.h [new file with mode: 0644]
STEER/STEERBase/AliVVeventFriend.h
STEER/STEERBase/AliVVfriendEvent.h
STEER/STEERBase/AliVVfriendTrack.h

index 378b1b7..e9a787a 100644 (file)
@@ -28,6 +28,7 @@
 #--------------------------------------------------------------------------------#
 
 set ( CLASS_HDRS
+    AliHLTGlobalFlatEsdTestComponent.h
     AliHLTGlobalFlatEsdConverterComponent.h
     AliHLTGlobalEsdConverterComponent.h
     AliHLTGlobalTrackMergerComponent.h
@@ -51,6 +52,8 @@ set ( CLASS_HDRS
     AliFlatESDV0.h
     AliFlatExternalTrackParam.h
     AliFlatTPCCluster.h
+    AliFlatESDFriend.h
+    AliFlatESDFriendTrack.h
     physics/AliHLTV0HistoComponent.h
     physics/AliHLTCaloHistoComponent.h
     physics/AliHLTCaloHistoProducer.h
diff --git a/HLT/global/AliFlatESDFriend.cxx b/HLT/global/AliFlatESDFriend.cxx
new file mode 100644 (file)
index 0000000..41ece91
--- /dev/null
@@ -0,0 +1,102 @@
+/* $Id$ */
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/**
+ * >> Flat structure representing an ESD friend <<
+ *
+ * To be used in the online and offline calibration schema.
+ *
+ * Class provides interface methods for 
+ *   - Filling from AliESDfriend, but also from HLT 
+ *   - Getter methods
+ *
+ * In the online case, the structure can be directly written into a shared 
+ * memory, in the offline case, the size has to be estimated first.
+ *
+ * 
+ * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli
+ *
+ * ************************************************************************
+ **/
+
+#include "AliFlatESDFriend.h"
+#include "AliFlatESDFriendTrack.h"
+#include "Riostream.h"
+
+// _______________________________________________________________________________________________________
+AliFlatESDFriend::AliFlatESDFriend() :
+  fContentSize(0),
+  fBitFlags(0),
+  fNTracks(0),
+  fNTrackEntries(0),
+  fTrackTablePointer(0),
+  fTracksPointer(0)
+{
+  // Default constructor
+  Reset();
+}
+
+void AliFlatESDFriend::Reset() 
+{
+  fBitFlags = 0;
+  fNTracks = 0;
+  fNTrackEntries = 0; 
+  fTrackTablePointer = 0;
+  fTracksPointer = 0;
+  for( int i=0; i<72; i++ ){
+    fNclustersTPC[i]=0;
+    fNclustersTPCused[i]=0;
+  }
+  // We set size of the fContent array such, that it reaches the end of the AliFlatESDFriend structure. 
+  // To be sure that actual GetSize() is always >= size of the structure. 
+  // First, it makes the memory alignment better. Second, just for a case..
+  fContentSize = sizeof(AliFlatESDFriend) - (fContent - reinterpret_cast<const Byte_t*>(this));
+  for( UInt_t i=0; i<fContentSize; i++ ) fContent[i]=0;
+}
+// _______________________________________________________________________________________________________
+AliFlatESDFriend::AliFlatESDFriend(AliFlatESDSpecialConstructorFlag f) :
+  fContentSize(),
+  fBitFlags(),
+  fNTracks(),
+  fNTrackEntries(),
+  fTrackTablePointer(),
+  fTracksPointer()
+{
+  //special constructor, used to restore the vtable pointer
+  //uses the special dummy constructors of contained objects
+
+  // the vtable pointer for this AliFlatESDFriend object is already reset when this constructor is called
+  // we should only initialise vtable pointers for all contained objects
+
+  if(f == AliFlatESDReinitialize){   
+    for( int i=0; i<fNTracks; i++ ){
+      AliFlatESDFriendTrack  *tr = GetFlatTrackNonConst(i);
+      if( tr ) tr->Reinitialize();
+    }
+  }
+  else{
+    AliFlatESDFriend();
+  }
+}
+
+void AliFlatESDFriend::Ls() const
+{
+  cout<<"Flat ESD friend: "<<endl;
+  cout<<"  N tracks: "<<fNTracks<<endl;
+  cout<<"  N track entries: "<<fNTrackEntries<<endl;
+}
diff --git a/HLT/global/AliFlatESDFriend.h b/HLT/global/AliFlatESDFriend.h
new file mode 100644 (file)
index 0000000..c1eac21
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef ALIFLATESDFRIEND_H
+#define ALIFLATESDFRIEND_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               *
+ * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli     */
+
+/*
+ * See implementation file for documentation
+ */
+
+#include "Rtypes.h"
+#include "AliFlatESDMisc.h"
+#include "AliVVeventFriend.h"
+#include "AliFlatESDFriendTrack.h"
+
+class AliVVVZEROfriend;
+class AliVVTZEROfriend;
+
+//_____________________________________________________________________________
+class AliFlatESDFriend : public AliVVfriend {
+public:
+  AliFlatESDFriend();
+  ~AliFlatESDFriend() {}
+
+  // Implementation of virtual methods of AliVVfriend
+
+  Int_t GetNumberOfTracks() const { return fNTracks; }
+  Int_t GetEntriesInTracks() const { return fNTrackEntries; }
+  const AliVVfriendTrack* GetTrack(Int_t i) const {return GetFlatTrack(i); }
+  
+  AliVVVZEROfriend *GetVZEROfriend(){ return NULL; }
+  AliVVTZEROfriend *GetTZEROfriend(){ return NULL; }
+
+  void Ls() const;
+
+  void Reset();
+  
+  Bool_t TestSkipBit() const { return (fBitFlags!=0); }
+
+  Int_t GetNclustersTPC(UInt_t sector) const { return (sector<72)?fNclustersTPC[sector]:0; }
+  Int_t GetNclustersTPCused(UInt_t sector) const { return (sector<72)?fNclustersTPCused[sector]:0; }
+  
+  //virtual void AddTrack(const AliVVfriendTrack *t) {}
+  //virtual void AddTrackAt(const AliVVfriendTrack* /*t*/, Int_t /*i*/) {}
+  //virtual void SetVZEROfriend(AliESDVZEROfriend* /*obj*/) {}
+  //virtual void SetTZEROfriend(AliESDTZEROfriend * obj) {}
+  //void SetSkipBit(Bool_t skip){}
+
+  // Own methods   
+  
+  void SetSkipBit(Bool_t skip){ fBitFlags = skip; }
+  void SetNclustersTPC(UInt_t sector, Int_t occupancy ) { if (sector<72) fNclustersTPC[sector]=occupancy; }
+  void SetNclustersTPCused(UInt_t sector, Int_t occupancy ) {if (sector<72) fNclustersTPCused[sector]=occupancy; }
+
+  const AliFlatESDFriendTrack  *GetFlatTrack( Int_t i ) const { 
+    const Long64_t *table = reinterpret_cast<const Long64_t*> (fContent + fTrackTablePointer);
+    if( i<0 || i>fNTracks || table[i]<0 ) return NULL;
+    return reinterpret_cast<const AliFlatESDFriendTrack*>( fContent + table[i] );
+  }
+
+  // -- Size methods
+
+  ULong64_t  GetSize()  const { return fContent - reinterpret_cast<const Byte_t*>(this) + fContentSize; }
+
+  void Reinitialize()
+  {
+    new (this) AliFlatESDFriend(AliFlatESDReinitialize);
+  }
+
+private: 
+
+  AliFlatESDFriend(const AliFlatESDFriend&);
+  AliFlatESDFriend& operator=(const AliFlatESDFriend& );  
+
+  // special constructor, to be called by placement new,
+  // when accessing information after reinterpret_cast
+  // so that vtable is generated, but values are not overwritten
+  AliFlatESDFriend(AliFlatESDSpecialConstructorFlag);
+  AliFlatESDFriendTrack  *GetFlatTrackNonConst( Int_t i ){ 
+    const Long64_t *table = reinterpret_cast<const Long64_t*> (fContent + fTrackTablePointer);
+    if( i<0 || i>fNTracks || table[i]<0 ) return NULL;
+    return reinterpret_cast<AliFlatESDFriendTrack*>( fContent + table[i] );
+  }
+
+  size_t fContentSize;     // Size of fContent
+  UInt_t fBitFlags; // bit flags
+  Int_t fNTracks;                   // Number of tracks in vector
+  Int_t fNTrackEntries;             // Number of non-empty track friends in vector
+  Int_t fNclustersTPC[72]; //cluster occupancy per sector per sector
+  Int_t fNclustersTPCused[72]; //number of clusters used in tracking per sector
+  // Pointers to specific data in fContent
+  
+  size_t fTrackTablePointer;         // position of the first track in fContent
+  size_t fTracksPointer;         // position of the first track in fContent
+
+  // -- Variable Size Object
+
+  Byte_t fContent[1];                  // Variale size object, which contains all data
+};
+
+#endif
diff --git a/HLT/global/AliFlatESDFriendTrack.cxx b/HLT/global/AliFlatESDFriendTrack.cxx
new file mode 100644 (file)
index 0000000..a2524ac
--- /dev/null
@@ -0,0 +1,61 @@
+/* $Id$ */
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/**
+ * >> Flat structure representing an ESDTrack <<
+ *
+ * To be used in the online and offline calibration schema.
+ *
+ * Class provides interface methods for 
+ *   - Filling from AliESDtrack and AliExternalTrackParam, as well 
+ *     as clusters from ESD friends (if requested)
+ *   - HLT Filling to be added
+ * 
+ *
+ * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli
+ *
+ **************************************************************************/
+
+
+#include "AliFlatESDFriendTrack.h"
+#include "AliExternalTrackParam.h"
+#include "Riostream.h"
+
+// _______________________________________________________________________________________________________
+AliFlatESDFriendTrack::AliFlatESDFriendTrack() :
+  AliVVfriendTrack()
+{
+  // Default constructor
+}
+
+
+// _______________________________________________________________________________________________________
+AliFlatESDFriendTrack::AliFlatESDFriendTrack(AliFlatESDSpecialConstructorFlag f) :
+  AliVVfriendTrack()
+{
+  //special constructor, used to restore the vtable pointer
+  //uses the special dummy constructors of contained objects
+
+  // the vtable pointer for this AliFlatESDFriend object is already reset when this constructor is called
+  // we should only initialise vtable pointers for all contained objects
+
+  if(f == AliFlatESDReinitialize){   
+  }
+  else{
+    AliFlatESDFriendTrack();
+  }
+}
diff --git a/HLT/global/AliFlatESDFriendTrack.h b/HLT/global/AliFlatESDFriendTrack.h
new file mode 100644 (file)
index 0000000..7d12eb8
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef ALIFLATESDFRIENDTRACK_H
+#define ALIFLATESDFRIENDTRACK_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               *
+ * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli     */
+
+/*
+ * See implementation file for documentation
+ */
+
+/*
+Cp - Track parameters constrained to the primary vertex
+Ip - Track parameters estimated at the inner wall of TPC
+TPCInner - Track parameters estimated at the inner wall of TPC using the TPC stand-alone 
+Op - Track parameters estimated at the point of maximal radial coordinate reached during the tracking
+*/
+
+#include "Rtypes.h"
+
+#include "AliFlatTPCCluster.h"
+#include "AliVVfriendTrack.h"
+#include "AliFlatESDMisc.h"
+
+class AliESDtrack;
+class AliESDfriendTrack;
+class AliExternalTrackParam;
+
+class AliFlatESDFriendTrack :public AliVVfriendTrack 
+{
+ public:
+  AliFlatESDFriendTrack();
+  ~AliFlatESDFriendTrack() {}
+
+  //implementation of AliVVfriendTrack methods 
+
+  AliVVTPCseed* GetTPCseed() const {return NULL;}
+  AliVVTRDseed* GetTRDseed() const {return NULL;}
+  const AliTrackPointArray *GetTrackPointArray() const { return NULL; }
+  const AliExternalTrackParam * GetITSOut() const { return NULL; } 
+  const AliExternalTrackParam * GetTPCOut() const { return  NULL; } 
+  const AliExternalTrackParam * GetTRDIn()  const { return NULL; } 
+
+  // own methods
+
+  void Reinitialize()
+  {
+    new (this) AliFlatESDFriendTrack(AliFlatESDReinitialize);
+  }
+
+private: 
+  AliFlatESDFriendTrack(const AliFlatESDFriendTrack &);
+  AliFlatESDFriendTrack& operator=(const AliFlatESDFriendTrack& );   
+
+  // special constructor, to be called by placement new,
+  // when accessing information after reinterpret_cast
+  // so that vtable is generated, but values are not overwritten
+  AliFlatESDFriendTrack(AliFlatESDSpecialConstructorFlag);
+
+};
+
+
+#endif
index d6e10b6..92ad127 100644 (file)
@@ -27,6 +27,7 @@
 #include "AliHLTConfigurationHandler.h"
 #include "TObjString.h"
 #include "TObjArray.h"
+#include "AliHLTGlobalFlatEsdTestComponent.h"
 
 // header files of library components
 #include "AliHLTGlobalTrackMergerComponent.h"
@@ -76,6 +77,7 @@ int AliHLTGlobalAgent::RegisterComponents(AliHLTComponentHandler* pHandler) cons
   // see header file for class documentation
   assert(pHandler);
   if (!pHandler) return -EINVAL;
+  pHandler->AddComponent(new AliHLTGlobalFlatEsdTestComponent);
   pHandler->AddComponent(new AliHLTGlobalTrackMergerComponent);
   pHandler->AddComponent(new AliHLTGlobalFlatEsdConverterComponent);
   pHandler->AddComponent(new AliHLTGlobalEsdConverterComponent);
@@ -162,6 +164,7 @@ int AliHLTGlobalAgent::CreateConfigurations(AliHLTConfigurationHandler* pHandler
 
   pHandler->CreateConfiguration("GLOBAL-flat-esd-converter", "GlobalFlatEsdConverter", esdInputs.Data(), "");
   pHandler->CreateConfiguration("GLOBAL-esd-converter", "GlobalEsdConverter", esdInputs.Data(), "");
+  pHandler->CreateConfiguration("GLOBAL-flat-esd-test", "GlobalFlatEsdTest", "GLOBAL-esd-converter GLOBAL-flat-esd-converter", "");
 
   ///////////////////////////////////////////////////////////////////////////////////////////////////
   //
diff --git a/HLT/global/AliHLTGlobalFlatEsdTestComponent.cxx b/HLT/global/AliHLTGlobalFlatEsdTestComponent.cxx
new file mode 100644 (file)
index 0000000..74a03da
--- /dev/null
@@ -0,0 +1,269 @@
+// $Id$
+
+//**************************************************************************
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//*                                                                        *
+//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+//*                  for The ALICE HLT Project.                            *
+//*                                                                        *
+//* Permission to use, copy, modify and distribute this software and its   *
+//* documentation strictly for non-commercial purposes is hereby granted   *
+//* without fee, provided that the above copyright notice appears in all   *
+//* copies and that both the copyright notice and this permission notice   *
+//* appear in the supporting documentation. The authors make no claims     *
+//* about the suitability of this software for any purpose. It is          *
+//* provided "as is" without express or implied warranty.                  *
+//**************************************************************************
+
+//  @file   AliHLTGlobalFlatEsdTestComponent.cxx
+//  @author Matthias Richter
+//  @date   
+//  @brief  Global ESD converter component.
+// 
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+#include <cassert>
+#include "AliHLTGlobalFlatEsdTestComponent.h"
+#include "AliFlatESDEvent.h"
+#include "AliFlatESDTrack.h"
+#include "AliFlatExternalTrackParam.h"
+#include "AliExternalTrackParam.h"
+
+#include "AliHLTGlobalBarrelTrack.h"
+#include "AliHLTExternalTrackParam.h"
+#include "AliHLTTrackMCLabel.h"
+#include "AliHLTCTPData.h"
+#include "AliHLTErrorGuard.h"
+#include "AliESDEvent.h"
+#include "AliESDtrack.h"
+#include "AliESDMuonTrack.h"
+#include "AliESDMuonCluster.h"
+#include "AliCDBEntry.h"
+#include "AliCDBManager.h"
+#include "AliPID.h"
+#include "TTree.h"
+#include "TList.h"
+#include "TClonesArray.h"
+//#include "AliHLTESDCaloClusterMaker.h"
+//#include "AliHLTCaloClusterDataStruct.h"
+//#include "AliHLTCaloClusterReader.h"
+//#include "AliESDCaloCluster.h"
+//#include "AliESDVZERO.h"
+#include "AliHLTGlobalVertexerComponent.h"
+#include "AliHLTVertexFinderBase.h"
+#include "AliHLTTPCSpacePointData.h"
+#include "AliHLTTPCClusterDataFormat.h"
+#include "AliHLTTPCDefinitions.h"
+#include "AliHLTTPCClusterMCData.h"
+#include "AliHLTTPCTransform.h"
+
+/** ROOT macro for the implementation of ROOT specific class methods */
+ClassImp(AliHLTGlobalFlatEsdTestComponent)
+
+AliHLTGlobalFlatEsdTestComponent::AliHLTGlobalFlatEsdTestComponent()
+  : AliHLTProcessor()
+  , fWriteClusters(0)
+  , fVerbosity(0)  
+  , fSolenoidBz(-5.00668)
+  , fBenchmark("FlatEsdTest")
+{
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+AliHLTGlobalFlatEsdTestComponent::~AliHLTGlobalFlatEsdTestComponent()
+{
+  // see header file for class documentation
+}
+
+int AliHLTGlobalFlatEsdTestComponent::Configure(const char* arguments)
+{
+  // see header file for class documentation
+  int iResult=0;
+  if (!arguments) return iResult;
+
+  TString allArgs=arguments;
+  TString argument;
+  int bMissingParam=0;
+
+  TObjArray* pTokens=allArgs.Tokenize(" ");
+  if (pTokens) {
+    for (int i=0; i<pTokens->GetEntries() && iResult>=0; i++) {
+      argument=((TObjString*)pTokens->At(i))->String();        
+      if (argument.IsNull()) continue;      
+      HLTError("unknown argument %s", argument.Data());
+      iResult=-EINVAL;
+      break;
+    }  
+    delete pTokens;
+  }
+  if (bMissingParam) {
+    HLTError("missing parameter for argument %s", argument.Data());
+    iResult=-EINVAL;
+  }
+
+  return iResult;
+}
+
+int AliHLTGlobalFlatEsdTestComponent::Reconfigure(const char* cdbEntry, const char* chainId)
+{
+  // see header file for class documentation
+  int iResult=0;
+  const char* path=NULL;
+  const char* defaultNotify="";
+  if (cdbEntry) {
+    path=cdbEntry;
+    defaultNotify=" (default)";
+  }
+  if (path) {
+    HLTInfo("reconfigure from entry %s%s, chain id %s", path, defaultNotify,(chainId!=NULL && chainId[0]!=0)?chainId:"<none>");
+    AliCDBEntry *pEntry = AliCDBManager::Instance()->Get(path/*,GetRunNo()*/);
+    if (pEntry) {
+      TObjString* pString=dynamic_cast<TObjString*>(pEntry->GetObject());
+      if (pString) {
+       HLTInfo("received configuration object string: \'%s\'", pString->String().Data());
+       iResult=Configure(pString->String().Data());
+      } else {
+       HLTError("configuration object \"%s\" has wrong type, required TObjString", path);
+      }
+    } else {
+      HLTError("can not fetch object \"%s\" from CDB", path);
+    }
+  }
+  
+  return iResult;
+}
+
+void AliHLTGlobalFlatEsdTestComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list)
+{
+  // see header file for class documentation
+  list.push_back(kAliHLTDataTypeFlatESD|kAliHLTDataOriginOut);
+  list.push_back(kAliHLTDataTypeESDObject|kAliHLTDataOriginOut);
+}
+
+AliHLTComponentDataType AliHLTGlobalFlatEsdTestComponent::GetOutputDataType()
+{
+  // see header file for class documentation
+  return kAliHLTDataTypeFlatESD|kAliHLTDataOriginOut;
+}
+
+void AliHLTGlobalFlatEsdTestComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
+{
+  // see header file for class documentation
+  constBase=2000000;
+  inputMultiplier=10.0;
+}
+
+int AliHLTGlobalFlatEsdTestComponent::DoInit(int argc, const char** argv)
+{
+  // see header file for class documentation
+  int iResult=0;
+  TString argument="";
+  int bMissingParam=0;
+
+  // default list of skiped ESD objects
+  TString skipObjects=
+    // "AliESDRun,"
+    // "AliESDHeader,"
+    // "AliESDZDC,"
+    "AliESDFMD,"
+    // "AliESDVZERO,"
+    // "AliESDTZERO,"
+    // "TPCVertex,"
+    // "SPDVertex,"
+    // "PrimaryVertex,"
+    // "AliMultiplicity,"
+    // "PHOSTrigger,"
+    // "EMCALTrigger,"
+    // "SPDPileupVertices,"
+    // "TrkPileupVertices,"
+    "Cascades,"
+    "Kinks,"
+    "AliRawDataErrorLogs,"
+    "AliESDACORDE";
+
+  iResult=Reconfigure(NULL, NULL);
+  TString allArgs = "";
+  for ( int i = 0; i < argc; i++ ) {
+    if ( !allArgs.IsNull() ) allArgs += " ";
+    allArgs += argv[i];
+  }
+
+  TObjArray* pTokens=allArgs.Tokenize(" ");
+  if (pTokens) {
+    for (int i=0; i<pTokens->GetEntries() && iResult>=0; i++) {
+      argument=((TObjString*)pTokens->At(i))->String();        
+      if (argument.IsNull()) continue;
+
+      // -noclusters
+      if (argument.CompareTo("-noclusters")==0) {
+       fWriteClusters=0;       
+       // -clusters
+      } else if (argument.CompareTo("-clusters")==0) {
+       fWriteClusters=1;
+      } else if (argument.Contains("-skipobject=")) {
+       argument.ReplaceAll("-skipobject=", "");
+       skipObjects=argument;
+      } else {
+       HLTError("unknown argument %s", argument.Data());
+       iResult=-EINVAL;
+       break;
+      }
+    }
+  }
+  if (bMissingParam) {
+    HLTError("missing parameter for argument %s", argument.Data());
+    iResult=-EINVAL;
+  }
+
+  fSolenoidBz=GetBz();
+
+  if (iResult>=0) {
+    SetupCTPData();
+  }
+
+  fBenchmark.SetTimer(0,"total");
+
+  return iResult;
+}
+
+int AliHLTGlobalFlatEsdTestComponent::DoDeinit()
+{
+  // see header file for class documentation
+
+  return 0;
+}
+
+int AliHLTGlobalFlatEsdTestComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/,
+                                                   const AliHLTComponentBlockData* /*blocks*/, 
+                                                   AliHLTComponentTriggerData& /*trigData*/,
+                                                   AliHLTUInt8_t* outputPtr, 
+                                                   AliHLTUInt32_t& size,
+                                                   AliHLTComponentBlockDataList& outputBlocks )
+{
+  // see header file for class documentation
+  int iResult=0;
+
+  if (!IsDataEvent()) return iResult;
+
+  fBenchmark.StartNewEvent();
+  fBenchmark.Start(0);
+
+  size_t maxOutputSize = size;
+  size = 0;
+
+  fBenchmark.Stop(0);
+  HLTWarning( fBenchmark.GetStatistics() );
+
+  return iResult;
+}
+
diff --git a/HLT/global/AliHLTGlobalFlatEsdTestComponent.h b/HLT/global/AliHLTGlobalFlatEsdTestComponent.h
new file mode 100644 (file)
index 0000000..bbe65c3
--- /dev/null
@@ -0,0 +1,102 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTGLOBALFLATESDTESTCOMPONENT_H
+#define ALIHLTGLOBALFLATESDTESTCOMPONENT_H
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
+
+//  @file   AliHLTGlobalFlatEsdTestComponent.h
+//  @author Matthias Richter
+//  @date   
+//  @brief  Global ESD converter component.
+//  @note
+
+#include "AliHLTProcessor.h"
+#include "AliHLTComponentBenchmark.h"
+#include <vector>
+
+
+/**
+ * @class AliHLTGlobalFlatEsdTestComponent
+ * Global collector for information designated for the HLT ESD.
+ *
+ * componentid: \b GlobalEsdConverter <br>
+ * componentlibrary: \b libAliHLTGlobal.so <br>
+ * Arguments: <br>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ * \li -notree                                                          <br>
+ *      write ESD directly to output (::kAliHLTDataTypeESDObject)
+ *      this has been made the default behavior in Sep 2008.
+ * \li -tree                                                            <br>
+ *      write ESD directly to TTree and to output (::kAliHLTDataTypeESDTree)
+ * \li -skipobject=name1,name2,...                                   <br>
+ *      comma separated list of ESD object names to be skipped, default is
+ *      AliESDZDC,AliESDFMD,Cascades,Kinks,AliRawDataErrorLogs,AliESDACORDE
+ *      leave blank to disable the option
+ *
+ * @ingroup alihlt_tpc_components
+ */
+class AliHLTGlobalFlatEsdTestComponent : public AliHLTProcessor
+{
+ public:
+  /** standard constructor */
+  AliHLTGlobalFlatEsdTestComponent();
+  /** destructor */
+  virtual ~AliHLTGlobalFlatEsdTestComponent();
+
+  // interface methods of base class
+  const char* GetComponentID() {return "GlobalFlatEsdTest";};
+  void GetInputDataTypes(AliHLTComponentDataTypeList& list);
+  AliHLTComponentDataType GetOutputDataType();
+  void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
+  AliHLTComponent* Spawn() {return new AliHLTGlobalFlatEsdTestComponent;}
+
+ protected:
+  // interface methods of base class
+  int DoInit(int argc, const char** argv);
+  int DoDeinit();
+  int DoEvent( const AliHLTComponentEventData& evtData,
+              const AliHLTComponentBlockData* blocks, 
+              AliHLTComponentTriggerData& trigData,
+              AliHLTUInt8_t* outputPtr, 
+              AliHLTUInt32_t& size,
+              AliHLTComponentBlockDataList& outputBlocks );
+
+  using AliHLTProcessor::DoEvent;
+
+
+ private:
+  /** copy constructor prohibited */
+  AliHLTGlobalFlatEsdTestComponent(const AliHLTGlobalFlatEsdTestComponent&);
+  /** assignment operator prohibited */
+  AliHLTGlobalFlatEsdTestComponent& operator=(const AliHLTGlobalFlatEsdTestComponent&);
+
+  /**
+   * (Re)Configure from the CDB
+   * Loads the following objects:
+   * - HLT/ConfigHLT/SolenoidBz
+   */
+  int Reconfigure(const char* cdbEntry, const char* chainId);
+
+  /**
+   * Configure the component.
+   * Parse a string for the configuration arguments and set the component
+   * properties.
+   */
+  int Configure(const char* arguments);
+
+  int fWriteClusters; //!transient
+
+  /// verbosity level
+  int fVerbosity; //!transient
+
+protected:
+
+  /// solenoid b field
+  Double_t fSolenoidBz; //! transient
+  AliHLTComponentBenchmark fBenchmark; // benchmark
+
+  ClassDef(AliHLTGlobalFlatEsdTestComponent, 0)
+};
+#endif
index fcc2f8c..0862e35 100644 (file)
@@ -3,25 +3,26 @@
 
 class AliVVVZEROfriend;
 class AliVVTZEROfriend;
+class AliVVfriendTrack;
 
 //_____________________________________________________________________________
 class AliVVfriend {
 public:
-  AliVVfriend();
-  virtual ~AliVVfriendEvent();
+  AliVVfriend() {}
+  virtual ~AliVVfriend() {}
 
   virtual Int_t GetNumberOfTracks() const {return 0;}
   AliVVfriendTrack* GetTrack(Int_t /*i*/) const {return NULL;}
   virtual Int_t GetEntriesInTracks() const {return 0;}
   
-  virtual AliESDVZEROfriend *GetVZEROfriend(){ return NULL; }
-  virtual AliESDTZEROfriend *GetTZEROfriend(){ return NULL; }
+  virtual AliVVVZEROfriend *GetVZEROfriend(){ return NULL; }
+  virtual AliVVTZEROfriend *GetTZEROfriend(){ return NULL; }
 
-  virtual void Ls() {}
+  virtual void Ls() const {}
 
   virtual void Reset() {}
   
-  Bool_t TestSkipBit() {return kFALSE;}
+  Bool_t TestSkipBit() const { return kFALSE; }
 
   virtual Int_t GetNclustersTPC(UInt_t /*sector*/) const {return 0;}
   virtual Int_t GetNclustersTPCused(UInt_t /*sector*/) const {return 0;}
index 99898d7..d90bbda 100644 (file)
@@ -13,7 +13,7 @@ public:
   //used in calibration
   virtual Bool_t TestSkipBit() {return kFALSE;}
   virtual Int_t GetNumberOfTracks() const {return 0;}
-  virtual AliESDfriendTrack *GetTrack(Int_t /*i*/) const {return NULL;}
+  virtual const AliESDfriendTrack *GetTrack(Int_t /*i*/) const {return NULL;}
 
 private: 
   AliVVfriendEvent(const AliVVfriendEvent &);
index dc7da4c..f2e7dec 100644 (file)
@@ -2,22 +2,28 @@
 #define ALIVVFRIENDTRACK_H
 
 //_____________________________________________________________________________
+
+class AliVVTPCseed;
+class AliVVTRDseed;
+class AliTrackPointArray;
+class AliExternalTrackParam;
+
 class AliVVfriendTrack {
 public:
-  AliVVfriendTrack();
-  virtual ~AliVVfriendTrack();
+  AliVVfriendTrack(){}
+  virtual ~AliVVfriendTrack(){}
 
   //used in calibration
   virtual AliVVTPCseed* GetTPCseed() const {return NULL;}
   virtual AliVVTRDseed* GetTRDseed() const {return NULL;}
-  virtual const AliTrackPointArray *GetTrackPointArray() const {return fPoints;}
-  virtual const AliExternalTrackParam * GetITSOut() const {return fITSOut;} 
-  virtual const AliExternalTrackParam * GetTPCOut() const {return  fTPCOut;} 
-  virtual const AliExternalTrackParam * GetTRDIn()  const {return fTRDIn;} 
+  virtual const AliTrackPointArray *GetTrackPointArray() const {return NULL;}
+  virtual const AliExternalTrackParam * GetITSOut() const {return NULL;} 
+  virtual const AliExternalTrackParam * GetTPCOut() const {return  NULL;} 
+  virtual const AliExternalTrackParam * GetTRDIn()  const {return NULL;} 
 
 private: 
-  AliVVfriendTrack(const AliVVfriendTrack &);
-  AliVVfriendTrack& operator=(const AliVVfriendTrack& esd);  
+  AliVVfriendTrack(const AliVVfriendTrack &){}
+  AliVVfriendTrack& operator=(const AliVVfriendTrack& ){}
 };
 
 #endif