1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
7 /// \class AliMUONDigitizerV3
8 /// \brief Digitizer (from SDigit to Digit), performing digit de-calibration.
10 /// \author Laurent Aphecetche
12 #ifndef ALIMUONDIGITIZERV3_H
13 #define ALIMUONDIGITIZERV3_H
15 #ifndef ALIDIGITIZER_H
16 #include "AliDigitizer.h"
19 #ifndef ROOT_TStopwatch
20 # include "TStopwatch.h"
23 class AliMUONCalibrationData;
26 class AliMUONTriggerEfficiencyCells;
31 class AliMUONDigitizerV3 : public AliDigitizer
34 AliMUONDigitizerV3(AliRunDigitizer* manager=0,
35 Bool_t generateNoisyDigits=kTRUE);
36 virtual ~AliMUONDigitizerV3();
38 virtual void Exec(Option_t* opt="");
40 virtual Bool_t Init();
44 AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
45 AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
47 void AddOrUpdateDigit(TClonesArray& array,
48 const AliMUONDigit& digit);
52 void ApplyResponseToTrackerDigit(AliMUONDigit& digit, Bool_t addNoise);
53 void ApplyResponseToTriggerDigit(AliMUONDigit& digit, AliMUONData* data);
56 AliMUONDigit* FindCorrespondingDigit(AliMUONDigit& digit,AliMUONData* data) const;
58 Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit) const;
60 void GenerateNoisyDigits();
61 void GenerateNoisyDigitsForOneCathode(Int_t detElemId, Int_t cathode);
63 AliMUONData* GetDataAccess(const TString& folderName);
65 Bool_t MergeDigits(const AliMUONDigit& src, AliMUONDigit& srcAndDest);
67 void MergeWithSDigits(AliMUONData& outputData, const AliMUONData& inputData,
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
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
84 ClassDef(AliMUONDigitizerV3,3) // MUON Digitizer V3-3