]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONDigitizerV3.h
Make this class non static, correct a bug (float instead of double) in ReadPCB, and...
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitizerV3.h
CommitLineData
92aeef15 1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2* See cxx source for full Copyright notice */
3
4// $Id$
5
6/// \ingroup sim
7/// \class AliMUONDigitizerV3
05314992 8/// \brief Digitizer (from SDigit to Digit), performing digit de-calibration.
9///
92aeef15 10/// \author Laurent Aphecetche
11
12#ifndef ALIMUONDIGITIZERV3_H
13#define ALIMUONDIGITIZERV3_H
14
15#ifndef ALIDIGITIZER_H
16#include "AliDigitizer.h"
17#endif
18
4ce497c4 19#ifndef ROOT_TStopwatch
20# include "TStopwatch.h"
21#endif
22
92aeef15 23class AliMUONCalibrationData;
24class AliMUONData;
25class AliMUONDigit;
4ce497c4 26class AliMUONTriggerEfficiencyCells;
92aeef15 27class TClonesArray;
4ce497c4 28class TF1;
92aeef15 29class TString;
30
31class AliMUONDigitizerV3 : public AliDigitizer
32{
33public:
92aeef15 34 AliMUONDigitizerV3(AliRunDigitizer* manager=0,
4ce497c4 35 Bool_t generateNoisyDigits=kTRUE);
92aeef15 36 virtual ~AliMUONDigitizerV3();
37
38 virtual void Exec(Option_t* opt="");
39
40 virtual Bool_t Init();
41
42private:
43
4ce497c4 44 AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
45 AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
46
92aeef15 47 void AddOrUpdateDigit(TClonesArray& array,
48 const AliMUONDigit& digit);
49
50 void ApplyResponse();
51
4ce497c4 52 void ApplyResponseToTrackerDigit(AliMUONDigit& digit, Bool_t addNoise);
53 void ApplyResponseToTriggerDigit(AliMUONDigit& digit, AliMUONData* data);
92aeef15 54
4ce497c4 55private:
85fec35d 56 AliMUONDigit* FindCorrespondingDigit(AliMUONDigit& digit,AliMUONData* data) const;
4ce497c4 57
58 Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit) const;
59
60 void GenerateNoisyDigits();
61 void GenerateNoisyDigitsForOneCathode(Int_t detElemId, Int_t cathode);
92aeef15 62
63 AliMUONData* GetDataAccess(const TString& folderName);
64
65 Bool_t MergeDigits(const AliMUONDigit& src, AliMUONDigit& srcAndDest);
66
05314992 67 void MergeWithSDigits(AliMUONData& outputData, const AliMUONData& inputData,
68 Int_t mask);
92aeef15 69
70private:
829425a5 71 Bool_t fIsInitialized; ///< are we initialized ?
72 AliMUONData* fOutputData; //!< pointer to access digits
73 AliMUONCalibrationData* fCalibrationData; //!< pointer to access calib parameters
74 TTask* fTriggerProcessor; ///< pointer to the trigger part of the job
829425a5 75 AliMUONTriggerEfficiencyCells* fTriggerEfficiency; ///< trigger efficiency map
76 mutable TStopwatch fFindDigitIndexTimer; //!< counting time spent in FindDigitIndex
77 TStopwatch fGenerateNoisyDigitsTimer; //!< counting time spent in GenerateNoisyDigits()
78 TStopwatch fExecTimer; //!< couting time spent in Exec()
79 TF1* fNoiseFunction; //!< function to randomly get signal above n*sigma_ped
80 Bool_t fGenerateNoisyDigits; //!< whether or not we should generate noise-only digits for tracker
81 static const Double_t fgkNSigmas; ///< \brief number of sigmas above ped to use
82 /// for noise-only digit generation and zero-suppression
4ce497c4 83
84 ClassDef(AliMUONDigitizerV3,3) // MUON Digitizer V3-3
92aeef15 85};
86
87#endif