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;
30 class AliMUONVDigitStore;
32 class AliMUONVTriggerStore;
33 class AliMUONTriggerElectronics;
35 class AliMUONDigitizerV3 : public AliDigitizer
38 AliMUONDigitizerV3(AliRunDigitizer* manager=0,
39 Bool_t generateNoisyDigits=kTRUE);
40 virtual ~AliMUONDigitizerV3();
42 virtual void Exec(Option_t* opt="");
44 virtual Bool_t Init();
48 AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
50 AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
52 void ApplyResponse(const AliMUONVDigitStore& store, AliMUONVDigitStore& filteredStore);
54 void ApplyResponseToTrackerDigit(AliMUONVDigit& digit, Bool_t addNoise);
55 void ApplyResponseToTriggerDigit(const AliMUONVDigitStore& digitStore, AliMUONVDigit& digit);
57 AliLoader* GetLoader(const TString& foldername);
61 AliMUONVDigit* FindCorrespondingDigit(const AliMUONVDigitStore& digitStore,
62 AliMUONVDigit& digit) const;
64 void GenerateNoisyDigits(AliMUONVDigitStore& digitStore);
65 void GenerateNoisyDigitsForOneCathode(AliMUONVDigitStore& digitStore,
66 Int_t detElemId, Int_t cathode);
68 void MergeWithSDigits(AliMUONVDigitStore*& digitStore,
69 const AliMUONVDigitStore& input,
73 Bool_t fIsInitialized; ///< are we initialized ?
74 AliMUONCalibrationData* fCalibrationData; //!< pointer to access calib parameters
75 AliMUONTriggerElectronics* fTriggerProcessor; ///< pointer to the trigger part of the job
76 AliMUONTriggerEfficiencyCells* fTriggerEfficiency; ///< trigger efficiency map
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
83 AliMUONLogger* fLogger; //!< to keep track of messages
84 AliMUONVTriggerStore* fTriggerStore; //!< trigger objects
85 AliMUONVDigitStore* fDigitStore; //!< temporary digits
86 AliMUONVDigitStore* fOutputDigitStore; //!< digits we'll output to disk
88 ClassDef(AliMUONDigitizerV3,5) // MUON Digitizer V3-5