LCOV - code coverage report
Current view: top level - ITS/ITSsim - AliITSDetTypeSim.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 18 28 64.3 %
Date: 2016-06-14 17:26:59 Functions: 17 27 63.0 %

          Line data    Source code
       1             : #ifndef ALIITSDETTYPESIM_H
       2             : #define ALIITSDETTYPESIM_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /*
       7             : $Id$ 
       8             : */
       9             : 
      10             : /////////////////////////////////////////////////////////////////////////
      11             : // * This class contains all of the "external" information needed to do//
      12             : // * detector specific simulations for the ITS.                        //
      13             : /////////////////////////////////////////////////////////////////////////
      14             : 
      15             : #include <TObject.h>
      16             : #include "AliITSLoader.h"
      17             : #include "AliITSSimuParam.h"
      18             : #include "AliITSFOGeneratorSPD.h"
      19             : 
      20             : class TObjArray;
      21             : class TClonesArray;
      22             : class TTree;
      23             : class AliCDBMetaData;
      24             : class AliITSdigit;
      25             : class AliITSmodule;
      26             : class AliITSpListItem;
      27             : class AliITSsimulation;
      28             : class AliITSsegmentation;
      29             : class AliITSresponse;
      30             : class AliITSCalibrationSSD;
      31             : class AliITSGainSSDv2;
      32             : class AliITSBadChannelsSSDv2;
      33             : class AliITSNoiseSSDv2;
      34             : class AliITSresponseSDD;
      35             : class AliITSDDLModuleMapSDD;
      36             : class AliITSCalibration;
      37             : class AliITSgeom;
      38             : class AliITSFOSignalsSPD;
      39             : class AliITSTriggerConditions;
      40             : 
      41             : class AliITSDetTypeSim : public TObject {
      42             :  public:
      43             :   
      44             :     AliITSDetTypeSim();
      45             :     virtual ~AliITSDetTypeSim(); 
      46             :     AliITSgeom *GetITSgeom() const {
      47       43899 :         if(fLoader)return ((AliITSLoader*)fLoader)->GetITSgeom();
      48       14633 :         else return 0;}
      49             :     void SetITSgeom(AliITSgeom *geom);
      50             :     
      51             :     virtual void SetSimulationModel(Int_t dettype,AliITSsimulation *sim);
      52             :     virtual AliITSsimulation* GetSimulationModel(Int_t dettype) const;        
      53             :     virtual AliITSsimulation* GetSimulationModelByModule(Int_t module) const;
      54             :         
      55             :     virtual void SetSegmentationModel(Int_t dettype,AliITSsegmentation *seg);
      56             :     virtual AliITSsegmentation* GetSegmentationModel(Int_t dettype) const;
      57             :     virtual AliITSsegmentation* GetSegmentationModelByModule(Int_t module) const;
      58             : 
      59             :     virtual void SetCalibrationModel(Int_t iMod,AliITSCalibration *resp);
      60             :     virtual void SetSPDNoisyModel(Int_t iMod, AliITSCalibration *cal);
      61             :     virtual void SetSPDSparseDeadModel(Int_t iMod, AliITSCalibration *cal);
      62             : 
      63             :     virtual AliITSCalibration* GetCalibrationModel(Int_t iMod) const;
      64             :     virtual AliITSCalibration* GetSPDNoisyModel(Int_t iMod) const;
      65             :     virtual AliITSTriggerConditions* GetTriggerConditions();
      66             : 
      67             :     virtual void SetSimuParam(const AliITSSimuParam* spar){
      68           0 :       if(fSimuPar) delete fSimuPar;
      69           0 :       fSimuPar = new AliITSSimuParam(*spar);
      70           0 :     }
      71    78711126 :     virtual AliITSSimuParam* GetSimuParam() const {return fSimuPar;}
      72             : 
      73           8 :     virtual AliITSDDLModuleMapSDD* GetDDLModuleMapSDD()const { return fDDLMapSDD;}
      74        2082 :     virtual AliITSresponseSDD* GetResponseSDD() const { return fRespSDD;}
      75           0 :     TObjArray* GetCalibrationArray() const {return fCalibration;}
      76           0 :     TObjArray* GetSegmentation() const {return fSegmentation;}
      77             :     void ResetCalibrationArray();
      78             :     void ResetSegmentation();
      79             : 
      80             :     virtual void SetLoader(AliITSLoader* loader);
      81          16 :     AliITSLoader* GetLoader() const {return fLoader;}
      82             : 
      83             :     virtual void SetDefaults();
      84             :     virtual void SetDefaultSimulation();
      85          30 :     virtual void SetRunNumber(Int_t rn=0){fRunNumber = rn;}
      86           8 :     virtual Int_t GetRunNumber() const {return fRunNumber;}
      87             :     virtual void SetTreeAddressS(TTree* treeS, const Char_t* name);
      88             :     virtual void SetTreeAddressD(TTree* treeD, const Char_t* name);
      89             : 
      90           0 :     virtual void SetDigits(TObjArray* digits) {fDigits=digits;}
      91           0 :     const TClonesArray* GetSDigits() const { return &fSDigits;}
      92          56 :     TObjArray*    GetDigits() const {return fDigits;}
      93           0 :     Int_t* GetNDigitArray() const {return fNDigits;}
      94             :     TClonesArray *DigitsAddress(Int_t id) const {
      95          48 :         return ((TClonesArray*)(*fDigits)[id]);}
      96           0 :     virtual void ResetSDigits(){fNSDigits=0; fSDigits.Clear();}
      97             :     virtual void ResetDigits();
      98             :     virtual void ResetDigits(Int_t branch);
      99             :     virtual void SDigitsToDigits(Option_t *opt, Char_t* name);
     100             : 
     101             :     virtual void AddSumDigit(AliITSpListItem &sdig);
     102             :     virtual void AddSimDigit(Int_t branch, const AliITSdigit *d);
     103             :     virtual void AddSimDigit(Int_t branch,Float_t phys,Int_t* digits,
     104             :                              Int_t* tracks,Int_t *hits,Float_t* trkcharges,
     105             :                              Int_t sigexpanded=-1000);
     106             :     virtual void SetDigitClassName(Int_t i, const Char_t* name) {
     107          48 :         fkDigClassName[i]=name;}
     108         306 :     const Char_t* GetDigitClassName(Int_t i) const {return fkDigClassName[i];}
     109             : 
     110           8 :     virtual void ResetFOSignals() {fFOGenerator.ResetSignals();}
     111             :     virtual void ProcessSPDDigitForFastOr(UInt_t module, UInt_t colM, UInt_t rowM);
     112           8 :     virtual void ProcessNoiseForFastOr() {fFOGenerator.ProcessNoise();}
     113           8 :     virtual AliITSFOSignalsSPD* GetFOSignals() {return fFOGenerator.GetFOSignals();}
     114             :     virtual void WriteFOSignals();
     115             :     virtual Float_t GetAverageGainSDD() const {
     116        1209 :       if(fAveGainSDD>0.) return fAveGainSDD;
     117           0 :       else return 1.;
     118         403 :     }
     119             : 
     120             : 
     121             :  protected:
     122             :     virtual void CreateCalibrationArray(); 
     123             :     virtual Bool_t GetCalibration();
     124             :     
     125             :  private:
     126             :     AliITSDetTypeSim(const AliITSDetTypeSim &source);
     127             :     AliITSDetTypeSim& operator=(const AliITSDetTypeSim &source);
     128             :     void SetDefaultSegmentation(Int_t idet);  // creates def segm.
     129             : 
     130             :     //conversion of the old SSD calibration objects tothe new ones
     131             :     void ReadOldSSDNoise(const TObjArray *array, 
     132             :                          AliITSNoiseSSDv2 *noiseSSD);
     133             :     void ReadOldSSDBadChannels(const TObjArray *array, 
     134             :                                AliITSBadChannelsSSDv2 *badChannelsSSD);
     135             :     void ReadOldSSDGain(const TObjArray *array, 
     136             :                         AliITSGainSSDv2 *gainSSD);
     137             : 
     138             :     static const Int_t fgkNdettypes;          // number of different det. types
     139             :     static const Int_t fgkDefaultNModulesSPD; // Total numbers of SPD modules by default
     140             :     static const Int_t fgkDefaultNModulesSDD; // Total numbers of SDD modules by default
     141             :     static const Int_t fgkDefaultNModulesSSD; // Total numbers of SSD modules by default
     142             : 
     143             :     TObjArray    *fSimulation;   //! [NDet]
     144             :     TObjArray    *fSegmentation; //! [NDet]
     145             :     TObjArray    *fCalibration;  //! [NMod]
     146             :     AliITSCalibrationSSD* fSSDCalibration;  //! SSD calibration object
     147             :     TObjArray    *fSPDNoisy;     //! [fgkDefaultNModulesSPD]
     148             :     TObjArray    *fSPDSparseDead;//! [fgkDefaultNModulesSPD]
     149             :     Int_t         fNSDigits;     //! number of SDigits
     150             :     TClonesArray  fSDigits;      //! Summable digits
     151             :     Int_t*        fNDigits;      //! [NDet] number of Digits for det.
     152             :     Int_t         fRunNumber;    //! run number (to access DB)
     153             :     TObjArray     *fDigits;      //! [NMod][NDigits]
     154             :     AliITSSimuParam *fSimuPar;   //! detector simulation parameters
     155             :     AliITSDDLModuleMapSDD *fDDLMapSDD; //! mapping DDL/module -> SDD module number
     156             :     AliITSresponseSDD *fRespSDD;  //! SDD response parameters 
     157             :     Float_t       fAveGainSDD;    //! Average gain of SDD good anodes
     158             :     const Char_t*       fkDigClassName[3]; //! String with digit class name.
     159             :     AliITSLoader* fLoader;          //! loader  
     160             :     Bool_t        fFirstcall;       //! flag
     161             :     AliITSFOGeneratorSPD fFOGenerator; //! Fast-OR generator object
     162             :     AliITSTriggerConditions* fTriggerConditions; //! Trigger conditions 
     163             :        
     164         160 :     ClassDef(AliITSDetTypeSim,15) // ITS Simulation structure
     165             :  
     166             : };
     167             : 
     168             : #endif

Generated by: LCOV version 1.11