]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCFileHandler.h
When Pt is bad defined (ex. no field), the multiple scattering effect is calculated...
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCFileHandler.h
index ecc6745fb81a6f464b4f2f3b70fd3eb4dcc32a88..fc61790814af72bd7832277ac533eedfc14b3403 100644 (file)
@@ -1,57 +1,51 @@
 // @(#) $Id$
+// Original: AliHLTFileHandler.h,v 1.19 2004/06/11 16:06:33 loizides 
 
 #ifndef ALIHLTTPCFILEHANDLER_H
 #define ALIHLTTPCFILEHANDLER_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   AliHLTTPCFileHandler.h
+    @author U. Frankenfeld, A. Vestbo, C. Loizides, maintained by
+            Matthias Richter
+    @date   
+    @brief  file input for the TPC tracking code before migration to the
+            HLT component framework
+*/
 
 #include "AliHLTTPCMemHandler.h"
 
 class TClonesArray;
 
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#ifdef use_newio
+class AliSimDigits;
+class AliTPCParam;
 #include <AliRunLoader.h>
-#endif
 
-#include <TObject.h>
-#include <TFile.h>
-#include <TTree.h>
+class TObject;
+class TFile;
+class TTree;
 
 class AliHLTTPCSpacePointData;
 class AliHLTTPCDigitRowData;
 class AliHLTTPCTrackSegmentData;
 class AliHLTTPCTrackArray;
 
-class AliHLTTPCFileHandler:public AliHLTTPCMemHandler{
-
- protected:
-#ifdef use_newio
-  AliRunLoader *fInAli;//!
-  Bool_t fUseRunLoader; //use runloader
-#else
-  TFile *fInAli;//!
-#endif
-
-  AliTPCParam *fParam;//!
-  AliSimDigits *fDigits;//!
-
-  TTree *fDigitsTree;//!
-  FILE *fMC;//!
-  
-  Bool_t fIndexCreated;   //is index created
-  Int_t  fIndex[36][159]; //stores index over digitstree 
-                          //for faster access w/o ASVVERSION
-  Bool_t fUseStaticIndex; //take static index
-  static Bool_t fgStaticIndexCreated;   //global index created
-  static Int_t  fgStaticIndex[36][159]; //global index
-
-  virtual Bool_t SetAliInput();
-  Bool_t GetDigitsTree(Int_t event);
-  Bool_t CreateIndex();  //create the index
+/**
+ * @class AliHLTTPCFileHandler
+ * This is the input interface class for the TPC tracking code before conversion to
+ * the HLT component framework.
+ * 
+ * @ingroup alihlt_tpc
+ */
+class AliHLTTPCFileHandler:public AliHLTTPCMemHandler {
 
  public:
+  /** standard constructor */
   AliHLTTPCFileHandler(Bool_t b=kFALSE);
-  ~AliHLTTPCFileHandler();
+  /** destructor */
+  virtual ~AliHLTTPCFileHandler();
 
   void FreeDigitsTree();
   static void CleanStaticIndex();
@@ -59,11 +53,7 @@ class AliHLTTPCFileHandler:public AliHLTTPCMemHandler{
   static Int_t LoadStaticIndex(Char_t *prefix=0,Int_t event=0);
 
   Bool_t SetAliInput(Char_t *name);
-  Bool_t SetAliInput(TFile *file);
-#ifdef use_newio
   Bool_t SetAliInput(AliRunLoader *runLoader);
-#else
-#endif
   void CloseAliInput(); 
   Bool_t IsDigit(Int_t event);
   
@@ -72,18 +62,112 @@ class AliHLTTPCFileHandler:public AliHLTTPCMemHandler{
   void CloseMCOutput();
 
   //Digit IO
-  Bool_t AliDigits2Binary(Int_t event=0,Bool_t altro=kFALSE);
-  AliHLTTPCDigitRowData *AliDigits2Memory(UInt_t & nrow,Int_t event=0); //Allocates Memory
+
+  /**
+   * Write AliDigits from AliRoot file to binary file.
+   * @param event      event no
+   * @param altro      use @ref AliDigits2Memory if kFALSE and @ref
+   *                   AliDigits2Memory if kTRUE
+   *
+   * Calls the @ref AliHLTTPCMemHandler::Memory2BinaryFile to write the file.
+   */
+  Bool_t AliDigits2BinaryFile(Int_t event=0,Bool_t altro=kFALSE);
+
+  /**
+   * Convert AliDigits from AliRoot file to HLT Digit data in memory.
+   * Read and convert/write digits to memory buffer. If no target buffer available,
+   * an appropriate buffer is allocated.<br>
+   * If the variable pTgtSize is prvided, the total size of the result array is
+   * returned. \b Note: the total size differs as the @ref AliHLTTPCDigitRowData
+   * structs are variable in size depending on the no of digits for that particular
+   * row.
+   * @param nrow       [OUT] number of rows
+   * @param event      the event no
+   * @param tgtBuffer  target buffer (optional)
+   * @param pTgtSize   size of target buffer (optional)
+   * @return pointer to array, size in nrow <br>
+   *         NULL in case of failure, required size in pTgtSize
+   */
+  //TODO: Check that the following change works. It should, but just double check.
+  AliHLTTPCDigitRowData *AliDigits2Memory(UInt_t & nrow,Int_t event, Byte_t* tgtBuffer, UInt_t* pTgtSize=NULL);
+
+  AliHLTTPCDigitRowData *AliDigits2Memory(UInt_t & nrow,Int_t event=0)
+  {
+    return AliDigits2Memory(nrow, event, NULL, NULL);
+  }
+
+  /**
+   * Convert and filter AliDigits from AliRoot file to HLT Digit data in memory.
+   * This functions is the same as @ref AliDigits2Memory but in addition it
+   * filters out single timebins, which is noise. The timebins which
+   * are removed are timebins which have the 4 zero neighbours; 
+   * (pad-1,time),(pad+1,time),(pad,time-1),(pad,time+1).
+   *
+   * This is legacy code, the two functions contain big portions of identical code
+   * will be merged.
+   * See @ref AliDigits2Memory for detailed description.
+   */
   AliHLTTPCDigitRowData *AliAltroDigits2Memory(UInt_t & nrow,Int_t event=0,Bool_t eventmerge=kFALSE); 
-  //Allocates Memory
+
+  /**
+   * Convert AliDigits from AliRoot file to Altro data format in memory.
+   */
+  int AliDigits2Altro(Int_t event, Byte_t* tgtBuffer, UInt_t size);
+
+  /**
+   * Write AliDigits from AliRoot file to binary file.
+   * @param event      event no
+   * @param altro      use @ref AliDigits2Memory if kFALSE and @ref
+   *                   AliDigits2Memory if kTRUE
+   *
+   * \b Note: pretty much the same as @ref AliDigits2BinaryFile.
+   * Calls the @ref AliHLTTPCMemHandler::Memory2CompBinary to write the file.
+   */
   Bool_t AliDigits2CompBinary(Int_t event=0,Bool_t altro=kFALSE);  
-  void AliDigits2RootFile(AliHLTTPCDigitRowData *rowPt,Char_t *new_digitsfile);
+
+  /**
+   * Write the data stored in rowPt, into a new AliROOT file.
+   * The data is stored in the AliROOT format 
+   * This is specially a nice thing if you have modified data, and wants to run it  
+   * through the offline reconstruction chain.
+   * The arguments is a pointer to the data, and the name of the new AliROOT file.
+   * Remember to pass the original AliROOT file (the one that contains the original
+   * simulated data) to this object, in order to retrieve the MC id's of the digits.
+  */
+  void AliDigits2RootFile(AliHLTTPCDigitRowData *rowPt,Char_t *newDigitsfile);
 
   //Point IO
   Bool_t AliPoints2Binary(Int_t eventn=0);
   AliHLTTPCSpacePointData *AliPoints2Memory(UInt_t & npoint,Int_t eventn=0);//Allocates Memory
 
-  ClassDef(AliHLTTPCFileHandler,1)   //Filehandler class
+ protected:
+  AliRunLoader *fInAli;//!
+  Bool_t fUseRunLoader; //use runloader
+
+  AliTPCParam *fParam;//!
+  AliSimDigits *fDigits;//!
+
+  TTree *fDigitsTree;//!
+  FILE *fMC;//!
+
+  Bool_t fIndexCreated;   //is index created
+  Int_t  fIndex[fgkNSlice][fgkNRow]; //stores index over digitstree 
+                          //for faster access w/o ASVVERSION
+  Bool_t fUseStaticIndex; //take static index
+  static Bool_t fgStaticIndexCreated;   //global index created
+  static Int_t  fgStaticIndex[fgkNSlice][fgkNRow]; //global index
+
+  virtual Bool_t SetAliInput();
+  Bool_t GetDigitsTree(Int_t event);
+  Bool_t CreateIndex();  //create the index
+
+ private:
+  /** copy constructor prohibited */
+  AliHLTTPCFileHandler(const AliHLTTPCFileHandler&);
+  /** assignment operator prohibited */
+  AliHLTTPCFileHandler& operator=(const AliHLTTPCFileHandler&);
+
+  ClassDef(AliHLTTPCFileHandler,2)   //HLT TPC Filehandler IO class
 };
 
 #endif