ROOT logo
#ifndef ALIITSSIMULATION_H
#define ALIITSSIMULATION_H
/**************************************************************************
 * 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.                  *
 **************************************************************************/

/* $Id$ */

#include <TObject.h>
#include "AliITSDetTypeSim.h"
#include "AliITSpList.h"

class AliITSCalibration;
class AliITSsegmentation;
class AliITSmodule;
class TRandom;
class TClonesArray;

// This is the base class for ITS detector signal simulations. Data members
// include are a pointer to the detectors specific response and segmentation
// classes. See the detector specific implementations for the propper code.

class AliITSsimulation : public TObject {

  public:
    AliITSsimulation(); // Default constructor
    // Standard constructor
    AliITSsimulation(AliITSDetTypeSim *dettyp);
    virtual ~AliITSsimulation(); // destructor
    // copy constructor. See detector specific implementation.
    AliITSsimulation(const AliITSsimulation &source);
    // Assignment opporator. See detector specific implementation.
    AliITSsimulation& operator=(const AliITSsimulation &source);
    // Initialize simulation
    virtual void Init() {};

    // *****************  Hits -> SDigits ******************
    // digitize module using the "slow" detector simulator creating
    // summable digits.
    virtual void SDigitiseModule(AliITSmodule *,Int_t,Int_t){;}

    // ***************** sum of SDigits -> Digits **********
    // Reset module arrays (maps), etc
    virtual void InitSimulationModule(Int_t,Int_t){;}
    // add (sum) a new list of summable digits to module, 
    // add an offset (mask) to the track numbers. Returns kTRUE if there
    // is a "good" signal in this module.
    virtual Bool_t AddSDigitsToModule( TClonesArray *pItemArray, Int_t mask );
    // digitize module using the "slow" detector simulator from
    // the sum of summable digits.
    virtual void FinishSDigitiseModule(){;}

    // **************** Hits -> Digits *********************
    // digitize module using the "slow" detector simulator creating digits.
    virtual void DigitiseModule(AliITSmodule *,Int_t,Int_t) {;}
    // digitizes module using the "fast" detector simulator.
    virtual void CreateFastRecPoints(AliITSmodule *,Int_t,
				     TRandom *,TClonesArray* /*recp*/) {;}
   // Return pointer to Response model
    virtual AliITSCalibration* GetCalibrationModel(Int_t mod = 0){return fDetType->GetCalibrationModel(mod);}
   // set pointer to Response model
    virtual void SetCalibrationModel(Int_t mod, AliITSCalibration *res){fDetType->SetCalibrationModel(mod,res);}
    // Return pointer to Segmentation object
    virtual AliITSsegmentation* GetSegmentationModel(Int_t dt) = 0;
    // set pointer to Segmentation object
    virtual void SetSegmentationModel(Int_t dt,AliITSsegmentation *seg) = 0;
    virtual AliITSpList* GetMap(){return fpList;} // Returns fpList, the map.
    virtual void SetMap(AliITSpList *p){fpList = p;} // Sets fpList, the map.
    virtual void ClearMap(){fpList->ClearMap();} // Clear fpList, map.
    virtual void SetModuleNumber(Int_t mod){fModule=mod;} // Set Module number
    virtual Int_t GetModuleNumber()const {return fModule;}// Gets Module number
    virtual void SetEventNumber(Int_t evnt){fEvent=evnt;} // Set Event number
    virtual Int_t GetEventNumber()const {return fEvent;}// Gets Event number
    // Sets the debug flag for debugging output
    void SetDebug(Int_t level=5){fDebug=level;}
    // Clears the debug flag so no debugging output will be generated
    void SetNoDebug(){fDebug=0;}
    // Returns the debug flag value
    Bool_t GetDebug(Int_t level=1)const {return fDebug>=level;}
    void SetDetType(AliITSDetTypeSim* dettyp) {fDetType=dettyp;}

 protected:
    AliITSDetTypeSim    *fDetType;        //! Access resp and segm via this obj
    AliITSpList         *fpList;          //!
    Int_t                fModule;         //!
    Int_t                fEvent;          //!
    Int_t                fDebug;          //  debug flag

  ClassDef(AliITSsimulation,4)  // Simulation base class 
    
};

#endif
 AliITSsimulation.h:1
 AliITSsimulation.h:2
 AliITSsimulation.h:3
 AliITSsimulation.h:4
 AliITSsimulation.h:5
 AliITSsimulation.h:6
 AliITSsimulation.h:7
 AliITSsimulation.h:8
 AliITSsimulation.h:9
 AliITSsimulation.h:10
 AliITSsimulation.h:11
 AliITSsimulation.h:12
 AliITSsimulation.h:13
 AliITSsimulation.h:14
 AliITSsimulation.h:15
 AliITSsimulation.h:16
 AliITSsimulation.h:17
 AliITSsimulation.h:18
 AliITSsimulation.h:19
 AliITSsimulation.h:20
 AliITSsimulation.h:21
 AliITSsimulation.h:22
 AliITSsimulation.h:23
 AliITSsimulation.h:24
 AliITSsimulation.h:25
 AliITSsimulation.h:26
 AliITSsimulation.h:27
 AliITSsimulation.h:28
 AliITSsimulation.h:29
 AliITSsimulation.h:30
 AliITSsimulation.h:31
 AliITSsimulation.h:32
 AliITSsimulation.h:33
 AliITSsimulation.h:34
 AliITSsimulation.h:35
 AliITSsimulation.h:36
 AliITSsimulation.h:37
 AliITSsimulation.h:38
 AliITSsimulation.h:39
 AliITSsimulation.h:40
 AliITSsimulation.h:41
 AliITSsimulation.h:42
 AliITSsimulation.h:43
 AliITSsimulation.h:44
 AliITSsimulation.h:45
 AliITSsimulation.h:46
 AliITSsimulation.h:47
 AliITSsimulation.h:48
 AliITSsimulation.h:49
 AliITSsimulation.h:50
 AliITSsimulation.h:51
 AliITSsimulation.h:52
 AliITSsimulation.h:53
 AliITSsimulation.h:54
 AliITSsimulation.h:55
 AliITSsimulation.h:56
 AliITSsimulation.h:57
 AliITSsimulation.h:58
 AliITSsimulation.h:59
 AliITSsimulation.h:60
 AliITSsimulation.h:61
 AliITSsimulation.h:62
 AliITSsimulation.h:63
 AliITSsimulation.h:64
 AliITSsimulation.h:65
 AliITSsimulation.h:66
 AliITSsimulation.h:67
 AliITSsimulation.h:68
 AliITSsimulation.h:69
 AliITSsimulation.h:70
 AliITSsimulation.h:71
 AliITSsimulation.h:72
 AliITSsimulation.h:73
 AliITSsimulation.h:74
 AliITSsimulation.h:75
 AliITSsimulation.h:76
 AliITSsimulation.h:77
 AliITSsimulation.h:78
 AliITSsimulation.h:79
 AliITSsimulation.h:80
 AliITSsimulation.h:81
 AliITSsimulation.h:82
 AliITSsimulation.h:83
 AliITSsimulation.h:84
 AliITSsimulation.h:85
 AliITSsimulation.h:86
 AliITSsimulation.h:87
 AliITSsimulation.h:88
 AliITSsimulation.h:89
 AliITSsimulation.h:90
 AliITSsimulation.h:91
 AliITSsimulation.h:92
 AliITSsimulation.h:93
 AliITSsimulation.h:94
 AliITSsimulation.h:95
 AliITSsimulation.h:96
 AliITSsimulation.h:97
 AliITSsimulation.h:98
 AliITSsimulation.h:99
 AliITSsimulation.h:100
 AliITSsimulation.h:101
 AliITSsimulation.h:102
 AliITSsimulation.h:103
 AliITSsimulation.h:104