]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigitizerV3.h
Updated list of MUON libraries
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitizerV3.h
index 905fb00853b01b046a8f6c47ca823ab33790f371..aad00e7374c9dc99e6aca6292187251b1f1e3449 100644 (file)
@@ -5,10 +5,9 @@
 
 /// \ingroup sim
 /// \class AliMUONDigitizerV3
-/// \brief New digitizer, not deriving from MUONDigitizer and doing
-/// decalibration of digits
-/// 
-/// \author Laurent Aphecetche
+/// \brief Digitizer (from SDigit to Digit), performing digit de-calibration.
+///
+//  Author Laurent Aphecetche
 
 #ifndef ALIMUONDIGITIZERV3_H
 #define ALIMUONDIGITIZERV3_H
 #include "AliDigitizer.h"
 #endif
 
+#ifndef ROOT_TStopwatch
+#  include "TStopwatch.h"
+#endif
+
 class AliMUONCalibrationData;
-class AliMUONData;
+class AliMUONSimData;
 class AliMUONDigit;
+class AliMUONLogger;
+class AliMUONTriggerEfficiencyCells;
 class TClonesArray;
+class TF1;
 class TString;
 
 class AliMUONDigitizerV3 : public AliDigitizer
 {
 public:
-  enum ETriggerCodeVersion
-  {
-    kTriggerDecision=-1,
-    kTriggerElectronics
-  };
-  
   AliMUONDigitizerV3(AliRunDigitizer* manager=0, 
-                     ETriggerCodeVersion=kTriggerDecision);
+                     Bool_t generateNoisyDigits=kTRUE);
   virtual ~AliMUONDigitizerV3();
 
   virtual void Exec(Option_t* opt="");
@@ -41,32 +41,50 @@ public:
   virtual Bool_t Init();
 
 private:
-    
+  /// Not implemented
+  AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
+  /// Not implemented
+  AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
+  
   void AddOrUpdateDigit(TClonesArray& array, 
                         const AliMUONDigit& digit);
     
   void ApplyResponse();
 
-  void ApplyResponseToDigit(AliMUONDigit& digit);
+  void ApplyResponseToTrackerDigit(AliMUONDigit& digit, Bool_t addNoise);
+  void ApplyResponseToTriggerDigit(AliMUONDigit& digit);
+
+private:  
+  AliMUONDigit* FindCorrespondingDigit(AliMUONDigit& digit) const;
+  
+  Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit) const;
 
-  Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit);
+  void GenerateNoisyDigits();
+  void GenerateNoisyDigitsForOneCathode(Int_t detElemId, Int_t cathode);
 
-  AliMUONData* GetDataAccess(const TString& folderName);
+  AliMUONSimData* GetDataAccess(const TString& folderName);
 
   Bool_t MergeDigits(const AliMUONDigit& src, AliMUONDigit& srcAndDest);
 
-  void MergeWithSDigits(AliMUONData& outputData, const AliMUONData& inputData);
+  void MergeWithSDigits(AliMUONSimData& outputData, const AliMUONSimData& inputData, 
+                        Int_t mask);
   
 private:
-  Int_t fZeroSuppression;
-  Int_t fSaturation;
-  Bool_t fIsInitialized; 
-  AliMUONData* fOutputData; //!
-  AliMUONCalibrationData* fCalibrationData; //!
-  TTask* fTriggerProcessor;
-  ETriggerCodeVersion fTriggerCodeVersion;
+  Bool_t fIsInitialized; ///< are we initialized ?
+  AliMUONSimData* fOutputData; //!< pointer to access digits
+  AliMUONCalibrationData* fCalibrationData; //!< pointer to access calib parameters
+  TTask* fTriggerProcessor; ///< pointer to the trigger part of the job
+  AliMUONTriggerEfficiencyCells* fTriggerEfficiency; ///< trigger efficiency map  
+  mutable TStopwatch fFindDigitIndexTimer; //!< counting time spent in FindDigitIndex
+  TStopwatch fGenerateNoisyDigitsTimer; //!< counting time spent in GenerateNoisyDigits()
+  TStopwatch fExecTimer; //!< couting time spent in Exec()  
+  TF1* fNoiseFunction; //!< function to randomly get signal above n*sigma_ped
+  Bool_t fGenerateNoisyDigits; //!< whether or not we should generate noise-only digits for tracker
+  static const Double_t fgkNSigmas; ///< \brief number of sigmas above ped to use 
+  /// for noise-only digit generation and zero-suppression
+  AliMUONLogger* fLogger; //!< to keep track of messages
   
-  ClassDef(AliMUONDigitizerV3,1) // 
+  ClassDef(AliMUONDigitizerV3,4) // MUON Digitizer V3-3
 };
 
 #endif