Release version of ITS code
[u/mrichter/AliRoot.git] / ITS / AliITS.h
index cfc4bd5..e4d71f5 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <TObjArray.h>
 #include <TBranch.h>
+#include <TString.h>
 #include <TTree.h>
 #include <TFile.h>
 #include <TObjectTable.h>
 #include "AliITSgeom.h"
 #include "AliITSsegmentation.h"
 #include "AliITSresponse.h"
-#include "AliITSDetType.h"
 #include "AliITShit.h"
 #include "AliITSdigit.h"
 #include "AliITSmodule.h"
 #include "AliITSRecPoint.h"
 #include "AliITSRawCluster.h"
 
-
+class AliITSDetType;
 class AliITSsimulation;
 class AliITSClusterFinder;
-//class AliITStrack;
 
 class AliITS : public AliDetector {
 
@@ -42,13 +41,11 @@ class AliITS : public AliDetector {
 
     virtual void   AddHit(Int_t track, Int_t *vol, Float_t *hits);
     virtual void   AddRealDigit(Int_t branch, Int_t *digits);
-    virtual void   AddDigit(Int_t branch, AliITSdigit *d);
-    virtual void   AddDigit(Int_t branch,Float_t phys,Int_t* digits, Int_t* tracks, Float_t* trkcharges); 
+    virtual void   AddSimDigit(Int_t branch, AliITSdigit *d);
+    virtual void   AddSimDigit(Int_t branch,Float_t phys,Int_t* digits,Int_t* tracks,Int_t *hits,Float_t* trkcharges); 
     //
     virtual void   AddCluster(Int_t branch, AliITSRawCluster *c);
     virtual void   AddRecPoint(const AliITSRecPoint &p);
-    virtual void   AddTrack(Float_t* tracks) {}
-//    virtual void   AddTrack(const AliITStrack&) {} 
 
     virtual void   ResetDigits();                   // depending on how the
     virtual void   ResetDigits(Int_t branch);       // tree will be filled only
@@ -56,16 +53,15 @@ class AliITS : public AliDetector {
     virtual void   ResetClusters(Int_t branch);     // the pair will be kept
     virtual void   ResetRecPoints();
 
-    virtual void   BuildGeometry() {}
-    virtual void   CreateGeometry() {}
-    virtual void   CreateMaterials() {}
-
+    // get geometry version - detailed (major) or coarse (minor)
     void GetGeometryVersion(Int_t &a,Int_t &b) const 
                   {a = fMajorVersion;b=fMinorVersion;return;}
     virtual Int_t  IsVersion() const {return 1;}
             Int_t  DistancetoPrimitive(Int_t px, Int_t py);
     virtual void   Init();
     virtual void   SetDefaults();
+    virtual void   SetDefaultSimulation();
+    virtual void   SetDefaultClusterFinders();
     // create separate tree for clusters - declustering refining
     virtual  void  MakeTreeC(Option_t *option="C");
     void           GetTreeC(Int_t event);
@@ -75,26 +71,24 @@ class AliITS : public AliDetector {
     virtual void   StepManager() {}
     // sort hits by module
     virtual void   InitModules(Int_t size,Int_t &nmodules);  
-    virtual void   FillModules(Int_t evnt,Int_t bgrev,Int_t lastev,
+    virtual void   FillModules(Int_t evnt,Int_t bgrev,
                        Int_t nmodules,Option_t *opt,Text_t *filename);
     virtual void   ClearModules();
     // Digitisation
-    void HitsToDigits(Int_t evNumber,Int_t bgrev,Int_t lastev,Int_t size,
+    void HitsToDigits(Int_t evNumber,Int_t bgrev,Int_t size,
                  Option_t *add, Option_t *det, Text_t *filename);
     // Reconstruct hits
     void DigitsToRecPoints(Int_t evNumber,Int_t lastEntry,Option_t *det);
     // Fast simulation of space points from hits
-    void HitsToFastRecPoints(Int_t evNumber,Int_t bgrev,Int_t lastev,Int_t size,
+    void HitsToFastRecPoints(Int_t evNumber,Int_t bgrev,Int_t size,
                  Option_t *add, Option_t *det, Text_t *filename);
 
-
-
     // Write digits into raw data format
     virtual void Digits2RawData() {}
+    // Decode raw data and store digits
+    virtual void RawData2Digits() {}
 
     // Configuration Methods (per detector type )
-    // Set number of detector types
-    virtual void   SetNDetTypes(Int_t ndtypes=3) {fNDetTypes=ndtypes;}
     // Set response 
     virtual void   SetResponseModel(Int_t id, AliITSresponse *response);
     // Set segmentation 
@@ -104,13 +98,15 @@ class AliITS : public AliDetector {
     // Set reconstruction 
     virtual void   SetReconstructionModel(Int_t id, AliITSClusterFinder *rec);
     // Set class names for digit and rec point 
-    virtual void   SetClasses(Int_t id, char* digit, char* cluster);
+    virtual void   SetClasses(Int_t id, const char *digit, const char *cluster);
 
 
     // Getters
     // ITS geometry functions
     virtual AliITSgeom  *GetITSgeom() const {return fITSgeom;}
+    // return pointer to the array of modules
     virtual TObjArray   *GetModules() const {return fITSmodules;}
+    // return pointer to a particular module
     AliITSmodule *GetModule(Int_t index) {return (AliITSmodule *)
                                              (fITSmodules->At(index));}
 
@@ -127,44 +123,44 @@ class AliITS : public AliDetector {
 
     // Return pointer to rec points 
     TClonesArray  *RecPoints()   {return fRecPoints;}
-    // Return pointer to tracks 
-    TClonesArray  *Tracks()   {return fTracks;}
 
     // Return pointer to DetType #id
     AliITSDetType  *DetType(Int_t id);
-    Int_t           NDetTypes() {return fNDetTypes;}
+    //Int_t           NDetTypes() {return fNDetTypes;}
 
     // Return pointer to the tree of clusters
     TTree          *TreeC() {return fTreeC;}
 
+
  protected:
 
+    static const Int_t fgkNTYPES=3;          // Number of detector types
+
     AliITSgeom  *fITSgeom;                   // Pointer to ITS geometry
     TObjArray   *fITSmodules;                // Pointer to ITS modules
 
     Bool_t fEuclidOut;                       // Flag to write out geometry 
-                                             //in euclid format
+                                             // in euclid format
     Int_t  fIdN;                             // the number of layers
     Int_t  *fIdSens;                         //[fIdN] layer identifier
-    char **fIdName;                          //layer identifier
+    TString *fIdName;                        //[fIdN] layer identifier
     // Geometry and Stepmanager version numbers used.
     Int_t fMajorVersion,fMinorVersion;       //detailed and coarse(minor) versions
     //
     //
+
+    // Int_t             fNDetTypes;           //Number of detector types
     TObjArray            *fDetTypes;           // List of detector types
-    Int_t                 fNDetTypes;          // Number of Detector types
 
-    TObjArray            *fDtype;              // List of digits
-    Int_t                *fNdtype;             //[fNDetTypes] Number of digits per type of
+    TObjArray            *fDtype;              //[fgkNTYPES]  List of digits
+    Int_t                *fNdtype;             //[fgkNTYPES] Number of digits per type of
                                                // detector 
-    TObjArray            *fCtype;              // List of clusters
-    Int_t                *fNctype;             //[fNDetTypes] Number of clusters per type
+    TObjArray            *fCtype;              //[fgkNTYPES] List of clusters
+    Int_t                *fNctype;             //[fgkNTYPES] Number of clusters per type
                                                // of detector
 
-
     TClonesArray         *fRecPoints;          // List of reconstructed points
     Int_t                 fNRecPoints;         // Number of rec points
-    TClonesArray         *fTracks;             // List of reconstructed tracks
     TTree                *fTreeC;              // Tree for raw clusters