]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITS.h
Removing extra semicolons
[u/mrichter/AliRoot.git] / ITS / AliITS.h
index 2f2ef676535b085e6630ca8faadeb87da2de7d19..49cda5cb0e494230cdf01bb23f56c523a25de59a 100644 (file)
 ////////////////////////////////////////////////////////////////////////
 
 
+#include <TObjArray.h> // used in inline function GetModule.
 #include "AliDetector.h"
+#include "AliITSDetTypeSim.h"
+
 
-class TObjArray;
 class TString;
 class TTree;
 
-class AliITSDetType;
+class AliITSpListItem;
 class AliITSsimulation;
-class AliITSClusterFinder;
 class AliITSsegmentation;
 class AliITSresponse;
 class AliITShit;
 class AliITSgeom;
 class AliITSdigit;
-class AliITSRecPoint;
-class AliITSRawCluster;
 class AliITSmodule;
-
-
+class AliDigitizer;
+class AliRunDigitizer;
 
 
 class AliITS : public AliDetector {
 
-  public:
-                    AliITS();
-                    AliITS(const char *name, const char *title);
-    virtual        ~AliITS();
-    AliITS(AliITS &source);
-    AliITS & operator=(AliITS &source);
-
-    virtual void   AddHit(Int_t track, Int_t *vol, Float_t *hits);
-    virtual void   AddRealDigit(Int_t branch, Int_t *digits);
-    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   ResetDigits();                   // depending on how the
-    virtual void   ResetDigits(Int_t branch);       // tree will be filled only
-    virtual void   ResetClusters();                 // one of the methods in 
-    virtual void   ResetClusters(Int_t branch);     // the pair will be kept
-    virtual void   ResetRecPoints();
-
+ public:
+    //================= Standard Classes ===============================
+    AliITS();  // Default creator.
+    AliITS(const char *name, const char *title); // standard Creator
+    virtual ~AliITS(); // destructor
+    AliITS(const AliITS &source); // copy constructor. Not to be used!
+    AliITS& operator=(const AliITS &source); // = operator. Not to be used!
+    virtual Int_t IsVersion() const {return 1;}
+    virtual Int_t DistancetoPrimitive(Int_t , Int_t )  {return 999;}
+
+    //===================== Simulation Geometry ========================
     // 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;}
-    virtual 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);
-    virtual void   MakeBranch(Option_t *opt=" ");
-    void           SetTreeAddress();
-    virtual void   SetEUCLID(Bool_t euclid=1) {fEuclidOut = euclid;}
-    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 nmodules,Option_t *opt,Text_t *filename);
-    virtual void   ClearModules();
-    // Digitisation
-    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 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 response 
-    virtual void   SetResponseModel(Int_t id, AliITSresponse *response);
-    // Set segmentation 
-    virtual void   SetSegmentationModel(Int_t id, AliITSsegmentation *seg);
-    // Set simulation - temporary 
-    virtual void   SetSimulationModel(Int_t id, AliITSsimulation *sim);
-    // Set reconstruction 
-    virtual void   SetReconstructionModel(Int_t id, AliITSClusterFinder *rec);
-    // Set class names for digit and rec point 
-    virtual void   SetClasses(Int_t id, const char *digit, const char *cluster);
-
-
-    // Getters
-    // ITS geometry functions
-    virtual AliITSgeom  *GetITSgeom() const {return fITSgeom;}
+    virtual Int_t GetMajorVersion() const {return -1;}
+    virtual Int_t GetMinorVersion() const {return -1;}
+    virtual void  GetGeometryVersion(Int_t &a,Int_t &b) const
+                          {a = GetMajorVersion();b=GetMinorVersion();return;}
+    virtual void  SetEUCLID(Bool_t euclid=kTRUE) {fEuclidOut = euclid;}
+    virtual Bool_t GetEUCLID()const {return fEuclidOut;}
+    //-------------------- Geometry Transformations --------------------
+
+    // ITS geometry functions From Simulation
+    AliITSgeom* GetITSgeom() const {return fDetTypeSim->GetITSgeom();}
+    void   SetITSgeom(AliITSgeom *geom) {fDetTypeSim->SetITSgeom(geom);}
+    virtual void   WriteGeometry();
     // 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));}
-
-    // Return pointers to digits 
-    TObjArray            *Dtype() {return fDtype;}
-    Int_t                *Ndtype() {return fNdtype;}
-    virtual TClonesArray *DigitsAddress(Int_t id) 
-                   {return ((TClonesArray *) (*fDtype)[id]);}
-    // Return pointers to clusters 
-    TObjArray            *Ctype() {return fCtype;}
-    Int_t                *Nctype() {return fNctype;}
-    virtual TClonesArray *ClustersAddress(Int_t id) 
-                   {return ((TClonesArray *) (*fCtype)[id]);}
-
-    // Return pointer to rec points 
-    TClonesArray  *RecPoints()   {return fRecPoints;}
-
-    // Return pointer to DetType #id
-    AliITSDetType  *DetType(Int_t id);
-    //Int_t           NDetTypes() {return fNDetTypes;}
-
-    // Return pointer to the tree of clusters
-    TTree          *TreeC() {return fTreeC;}
-
+    TObjArray *GetModules(){return fITSmodules;}
+
+    AliITSmodule *GetModule(Int_t index){
+        return (AliITSmodule*)(fITSmodules->At(index));}
+
+    virtual void SetDetTypeSim(AliITSDetTypeSim* dts) {fDetTypeSim=dts;}
+    AliITSDetTypeSim* GetDetTypeSim() const {return fDetTypeSim;}
+    //================ Necessary general Classes =======================
+    virtual void Init();
+    virtual AliLoader* MakeLoader(const char* topfoldername);
+    virtual void SetDefaults();
+    virtual void SetDefaultSimulation();
+    virtual void MakeBranch(Option_t *opt=" ");
+    virtual void MakeBranchS(const char* fl);
+    virtual void MakeBranchD(const char* file);
+    virtual void MakeBranchInTreeD(TTree* treeD, const char* file=0);
+    virtual void SetTreeAddress();
+     //---------- Configuration Methods (per detector type) -------------
+    // Determines which ITS subdetectors will be processed. Effects
+    // digitization, and Reconstruction only.
+    void SetDetectors(Option_t *opt="All"){fOpt = opt;}
+    // Returns the list of ITS subdetectors that will be processed.
+    Option_t* GetDetectors(){return fOpt;}
+
+    // Set response
+    virtual void SetResponseModel(Int_t module, AliITSresponse *response){
+        fDetTypeSim->SetResponseModel(module,response);}
+    // Set segmentation for Simulation
+    virtual void SetSegmentationModel(Int_t id, AliITSsegmentation *seg){
+        fDetTypeSim->SetSegmentationModel(id,seg);}
+    // Set simulation 
+    virtual void SetSimulationModel(Int_t id, AliITSsimulation *sim){
+        fDetTypeSim->SetSimulationModel(id,sim);}
+    // Set simulation 
+    virtual AliITSsimulation* GetSimulationModel(Int_t id){
+       return fDetTypeSim->GetSimulationModel(id);}
+    //=================== Hits =========================================
+    virtual void StepManager() {} // See Step Manager for specific geometry.
+    //------------ sort hits by module for Digitisation ----------------
+    virtual void FillModules(Int_t evnt,Int_t bgrev,Int_t nmodules, Option_t *opt, const char *filename);
+    virtual void InitModules(Int_t size,Int_t &nmodules);  
+    virtual void FillModules(TTree *treeH, Int_t mask = 0);
+    virtual void ClearModules(){if(fITSmodules) fITSmodules->Delete();}
+    virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits);
+   
+    TClonesArray* GetSDigits() const { return fDetTypeSim->GetSDigits();}
+
+    AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
+    virtual void SDigitsToDigits(Option_t *opt="All");
+    virtual void SDigits2Digits(){SDigitsToDigits("All");}
+    virtual void Hits2Digits(); 
+    virtual void Hits2SDigits();
+    virtual void Hits2PreDigits();
+    virtual void HitsToDigits(Int_t evNumber,Int_t bgrev,Int_t size,
+                          Option_t *option,Option_t *opt,
+                          const char *filename);
+    virtual void HitsToPreDigits(Int_t evNumber,Int_t bgrev,Int_t size,
+                             Option_t *option,Option_t *opt,
+                             const char *filename);
+    void HitsToSDigits(Int_t evNumber,Int_t bgrev,Int_t size,
+                       Option_t *add, Option_t *det, const char *filename)
+      {HitsToPreDigits(evNumber,bgrev,size,add,det,filename);}
+    
+    virtual void ResetDigits();
+    virtual void ResetDigits(Int_t branch);
+    virtual void AddSumDigit(AliITSpListItem &sdig);
+    virtual void AddRealDigit(Int_t branch, Int_t *digits);
+
+    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);
+    TObjArray* GetDigits()  const {return fDetTypeSim->GetDigits();}
+    Int_t* GetNDigitArray() const {return fDetTypeSim->GetNDigitArray();}
+    TClonesArray *DigitsAddress(Int_t id) { return fDetTypeSim->DigitsAddress(id);}
+    //Fast simulation
+    virtual void HitsToFastRecPoints(Int_t evNumber,Int_t bgrev,Int_t size,
+                 Option_t *add, Option_t *det, const char *filename);
+    virtual Int_t Hits2Clusters(TTree *in, TTree *out);
+    virtual void RecPoints2Clusters
+      (const TClonesArray *points, Int_t idx, TClonesArray *clusters);
+    virtual void CheckLabels(Int_t lab[3]) const;
+
+    //===================== Raw Data IO ================================
+    // Write digits into raw data format
+    virtual void Digits2Raw();
 
  protected:
+    static const Int_t fgkNTYPES=3; //number of detector types
+    //================== Data Members ==================================
+    AliITSDetTypeSim *fDetTypeSim; //detector type for simulation
+    Bool_t        fEuclidOut;  // Flag to write geometry in euclid format
+    Option_t     *fOpt;        //! Detector option ="All" unless changed.
+    Int_t         fIdN;        // the number of layers
+    Int_t        *fIdSens;     //[fIdN] layer identifier
+    TString      *fIdName;     //[fIdN] layer identifier
+    TObjArray    *fITSmodules; //! Pointer to ITS modules
+    ClassDef(AliITS,5) // Base class for ITS
 
-    static const Int_t fgkNTYPES;          // 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
-    Int_t  fIdN;                             // the number of layers
-    Int_t  *fIdSens;                         //[fIdN] 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
-
-    TObjArray            *fDtype;              //[fgkNTYPES]  List of digits
-    Int_t                *fNdtype;             //[fgkNTYPES] Number of digits per type of
-                                               // detector 
-    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
-    TTree                *fTreeC;              // Tree for raw clusters
-
-
-    ClassDef(AliITS,1) // Base class for ITS
 };
 
 #endif