ROOT logo
#ifndef ALIFMDHITDIGITIZER_H
#define ALIFMDHITDIGITIZER_H
/* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights
 * reserved. 
 *
 * See cxx source for full Copyright notice                               
 */
// Classses to make Hits into digits and summable digits
//    
//    Digits consists of
//    - Detector #
//    - Ring ID                                             
//    - Sector #     
//    - Strip #
//    - ADC count in this channel
//
/** @file    AliFMDHitDigitizer.h
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Mon Mar 27 12:38:26 2006
    @brief   FMD Digitizers declaration
    @ingroup FMD_sim
*/
#ifndef ALIFMDBASEDIGITIZER_H
# include <AliFMDBaseDigitizer.h>
#endif

//====================================================================
class TClonesArray;
class AliFMD;
class AliLoader;
class AliRunLoader;
class AliFMDDigit;
class AliStack;



//====================================================================
/** @class AliFMDHitDigitizer
    @brief Concrete digitizer to make digits from hits.  See also
    AliFMDBaseDigitizer documentation.  
    @ingroup FMD_sim
 */
class AliFMDHitDigitizer : public AliFMDBaseDigitizer
{
public:
  enum Output_t { 
    kDigits, 
    kSDigits
  };
    
  /** CTOR */
  AliFMDHitDigitizer() 
    : AliFMDBaseDigitizer(), 
      fOutput(kDigits), 
      fHoldTime(2e-6),
      fStack(0)
  {}
  /** CTOR 
      @param name Name */
  AliFMDHitDigitizer(AliFMD* fmd, Output_t  output);
  /** DTOR */
  virtual ~AliFMDHitDigitizer() {}
  /** Run over the input events (retrieved via run loader) */
  void Digitize(Option_t* option="");
  /** 
   * Set the end of integration
   * 
   * @param holdT Time when integration ends (nominally @f$
   *        2\mu{}s@f$) 
   */
  void SetHoldTime(Double_t holdT=2e-6) { fHoldTime = holdT; }
  /** 
   * Get the hold time 
   * 
   * @return Hold time in seconds
   */
  Double_t GetHoldTime() const { return fHoldTime; }
protected:
  /** Copy constructor 
      @param o Object to copy from */
  AliFMDHitDigitizer(const AliFMDHitDigitizer& o) 
    : AliFMDBaseDigitizer(o),
      fOutput(o.fOutput), 
      fHoldTime(2e-6),
      fStack(o.fStack)
  {}
  /** 
   * Assignment operator
   *
   * @param o Object to assign from 
   * @return Reference to this 
   */
  AliFMDHitDigitizer& operator=(const AliFMDHitDigitizer& o); 
  /** 
   * Make the output tree using the passed loader 
   *
   * @param loader 
   * @return The generated tree. 
   */
  TTree* MakeOutputTree(AliLoader* loader);
  /** Sum energy deposited contributions from each hit in a cache
      @param hitsBranch Branch in input tree */
  void SumContributions(TBranch* hitsBranch);
  /** Make a pedestal 
      @param detector Detector #
      @param ring     Ring ID
      @param sector   Sector #
      @param strip    Strip #
      @return Pedestal value */
  UShort_t MakePedestal(UShort_t  detector, 
			Char_t    ring, 
			UShort_t  sector, 
			UShort_t  strip) const;
  /** Add a digit to output.
      @param fmd      Pointer to detector object
      @param detector Detector #
      @param ring     Ring ID
      @param sector   Sector number
      @param strip    Strip number
      @param edep     Energy deposited (not used)
      @param count1   ADC count 1
      @param count2   ADC count 2 (-1 if not used)
      @param count3   ADC count 3 (-1 if not used) 
      @param count4   ADC count 4 (-1 if not used) */
  void AddDigit(UShort_t       detector, 
		Char_t         ring,
		UShort_t       sector, 
		UShort_t       strip, 
		Float_t        edep, 
		UShort_t       count1, 
		Short_t        count2, 
		Short_t        count3,
		Short_t        count4, 
		UShort_t       ntot, 
		UShort_t       nprim,
		const TArrayI& trackrefs) const;
  /** Check that digit data is consistent
      @param digit   Digit
      @param nhits   Number of hits
      @param counts  ADC counts */
  void CheckDigit(AliFMDDigit*    digit,
		  UShort_t        nhits,
		  const TArrayI&  counts);
  /** 
   * Store the data using the loader 
   *
   * @param loader The loader 
   */
  void StoreDigits(const AliLoader* loader);
  

  Output_t      fOutput;           // Output mode
  Double_t      fHoldTime;         // Stop of integration
  AliStack*     fStack;            // Kinematics

  ClassDef(AliFMDHitDigitizer,1) // Make Digits from Hits
};


#endif
//____________________________________________________________________
//
// Local Variables:
//   mode: C++
// End:
//
//
// EOF
//

 AliFMDHitDigitizer.h:1
 AliFMDHitDigitizer.h:2
 AliFMDHitDigitizer.h:3
 AliFMDHitDigitizer.h:4
 AliFMDHitDigitizer.h:5
 AliFMDHitDigitizer.h:6
 AliFMDHitDigitizer.h:7
 AliFMDHitDigitizer.h:8
 AliFMDHitDigitizer.h:9
 AliFMDHitDigitizer.h:10
 AliFMDHitDigitizer.h:11
 AliFMDHitDigitizer.h:12
 AliFMDHitDigitizer.h:13
 AliFMDHitDigitizer.h:14
 AliFMDHitDigitizer.h:15
 AliFMDHitDigitizer.h:16
 AliFMDHitDigitizer.h:17
 AliFMDHitDigitizer.h:18
 AliFMDHitDigitizer.h:19
 AliFMDHitDigitizer.h:20
 AliFMDHitDigitizer.h:21
 AliFMDHitDigitizer.h:22
 AliFMDHitDigitizer.h:23
 AliFMDHitDigitizer.h:24
 AliFMDHitDigitizer.h:25
 AliFMDHitDigitizer.h:26
 AliFMDHitDigitizer.h:27
 AliFMDHitDigitizer.h:28
 AliFMDHitDigitizer.h:29
 AliFMDHitDigitizer.h:30
 AliFMDHitDigitizer.h:31
 AliFMDHitDigitizer.h:32
 AliFMDHitDigitizer.h:33
 AliFMDHitDigitizer.h:34
 AliFMDHitDigitizer.h:35
 AliFMDHitDigitizer.h:36
 AliFMDHitDigitizer.h:37
 AliFMDHitDigitizer.h:38
 AliFMDHitDigitizer.h:39
 AliFMDHitDigitizer.h:40
 AliFMDHitDigitizer.h:41
 AliFMDHitDigitizer.h:42
 AliFMDHitDigitizer.h:43
 AliFMDHitDigitizer.h:44
 AliFMDHitDigitizer.h:45
 AliFMDHitDigitizer.h:46
 AliFMDHitDigitizer.h:47
 AliFMDHitDigitizer.h:48
 AliFMDHitDigitizer.h:49
 AliFMDHitDigitizer.h:50
 AliFMDHitDigitizer.h:51
 AliFMDHitDigitizer.h:52
 AliFMDHitDigitizer.h:53
 AliFMDHitDigitizer.h:54
 AliFMDHitDigitizer.h:55
 AliFMDHitDigitizer.h:56
 AliFMDHitDigitizer.h:57
 AliFMDHitDigitizer.h:58
 AliFMDHitDigitizer.h:59
 AliFMDHitDigitizer.h:60
 AliFMDHitDigitizer.h:61
 AliFMDHitDigitizer.h:62
 AliFMDHitDigitizer.h:63
 AliFMDHitDigitizer.h:64
 AliFMDHitDigitizer.h:65
 AliFMDHitDigitizer.h:66
 AliFMDHitDigitizer.h:67
 AliFMDHitDigitizer.h:68
 AliFMDHitDigitizer.h:69
 AliFMDHitDigitizer.h:70
 AliFMDHitDigitizer.h:71
 AliFMDHitDigitizer.h:72
 AliFMDHitDigitizer.h:73
 AliFMDHitDigitizer.h:74
 AliFMDHitDigitizer.h:75
 AliFMDHitDigitizer.h:76
 AliFMDHitDigitizer.h:77
 AliFMDHitDigitizer.h:78
 AliFMDHitDigitizer.h:79
 AliFMDHitDigitizer.h:80
 AliFMDHitDigitizer.h:81
 AliFMDHitDigitizer.h:82
 AliFMDHitDigitizer.h:83
 AliFMDHitDigitizer.h:84
 AliFMDHitDigitizer.h:85
 AliFMDHitDigitizer.h:86
 AliFMDHitDigitizer.h:87
 AliFMDHitDigitizer.h:88
 AliFMDHitDigitizer.h:89
 AliFMDHitDigitizer.h:90
 AliFMDHitDigitizer.h:91
 AliFMDHitDigitizer.h:92
 AliFMDHitDigitizer.h:93
 AliFMDHitDigitizer.h:94
 AliFMDHitDigitizer.h:95
 AliFMDHitDigitizer.h:96
 AliFMDHitDigitizer.h:97
 AliFMDHitDigitizer.h:98
 AliFMDHitDigitizer.h:99
 AliFMDHitDigitizer.h:100
 AliFMDHitDigitizer.h:101
 AliFMDHitDigitizer.h:102
 AliFMDHitDigitizer.h:103
 AliFMDHitDigitizer.h:104
 AliFMDHitDigitizer.h:105
 AliFMDHitDigitizer.h:106
 AliFMDHitDigitizer.h:107
 AliFMDHitDigitizer.h:108
 AliFMDHitDigitizer.h:109
 AliFMDHitDigitizer.h:110
 AliFMDHitDigitizer.h:111
 AliFMDHitDigitizer.h:112
 AliFMDHitDigitizer.h:113
 AliFMDHitDigitizer.h:114
 AliFMDHitDigitizer.h:115
 AliFMDHitDigitizer.h:116
 AliFMDHitDigitizer.h:117
 AliFMDHitDigitizer.h:118
 AliFMDHitDigitizer.h:119
 AliFMDHitDigitizer.h:120
 AliFMDHitDigitizer.h:121
 AliFMDHitDigitizer.h:122
 AliFMDHitDigitizer.h:123
 AliFMDHitDigitizer.h:124
 AliFMDHitDigitizer.h:125
 AliFMDHitDigitizer.h:126
 AliFMDHitDigitizer.h:127
 AliFMDHitDigitizer.h:128
 AliFMDHitDigitizer.h:129
 AliFMDHitDigitizer.h:130
 AliFMDHitDigitizer.h:131
 AliFMDHitDigitizer.h:132
 AliFMDHitDigitizer.h:133
 AliFMDHitDigitizer.h:134
 AliFMDHitDigitizer.h:135
 AliFMDHitDigitizer.h:136
 AliFMDHitDigitizer.h:137
 AliFMDHitDigitizer.h:138
 AliFMDHitDigitizer.h:139
 AliFMDHitDigitizer.h:140
 AliFMDHitDigitizer.h:141
 AliFMDHitDigitizer.h:142
 AliFMDHitDigitizer.h:143
 AliFMDHitDigitizer.h:144
 AliFMDHitDigitizer.h:145
 AliFMDHitDigitizer.h:146
 AliFMDHitDigitizer.h:147
 AliFMDHitDigitizer.h:148
 AliFMDHitDigitizer.h:149
 AliFMDHitDigitizer.h:150
 AliFMDHitDigitizer.h:151
 AliFMDHitDigitizer.h:152
 AliFMDHitDigitizer.h:153
 AliFMDHitDigitizer.h:154
 AliFMDHitDigitizer.h:155
 AliFMDHitDigitizer.h:156
 AliFMDHitDigitizer.h:157
 AliFMDHitDigitizer.h:158
 AliFMDHitDigitizer.h:159
 AliFMDHitDigitizer.h:160
 AliFMDHitDigitizer.h:161
 AliFMDHitDigitizer.h:162
 AliFMDHitDigitizer.h:163
 AliFMDHitDigitizer.h:164
 AliFMDHitDigitizer.h:165
 AliFMDHitDigitizer.h:166
 AliFMDHitDigitizer.h:167
 AliFMDHitDigitizer.h:168
 AliFMDHitDigitizer.h:169
 AliFMDHitDigitizer.h:170