ROOT logo
#ifndef ALIMUONPEDESTAL_H
#define ALIMUONPEDESTAL_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup calib
/// \class AliMUONPedestal
/// \brief Implementation of the pedestal computing
/// 
//  Author Alberto Baldisseri, JL Charvet 

#ifndef ROOT_TObject
#  include <TObject.h>
#endif
#ifndef ROOT_TString
#  include <TString.h>
#endif

class AliMUONVStore;

class TTimeStamp;
class TTree;
class TFile;

using std::ofstream;
using std::ostream;

class AliMUONPedestal : public TObject
{
  public:
    AliMUONPedestal();
    AliMUONPedestal(TRootIOCtor* dummy);
    virtual ~AliMUONPedestal();
    
    /// return the number of current events
    void SetAliNCurrentEvents(Int_t events) {fNCurrentEvents = events;}
    /// return the number of events
    void SetAliNEvents(Int_t events) {fNEvents = events;}
    /// return the Run number
    void SetAliRunNumber(Int_t run) {fRunNumber = run;}
    /// return the total number of channels (or pads)
    void SetAliNChannel(Int_t nch) {fNChannel = nch;}
    /// output .log file of DAs
    void SetAlifilcout(ofstream* stream) {fFilcout = stream;}
    /// return date and time
    TTimeStamp* GetDate() const {return fDate;}
    /// Count parity errors per Buspatch
    AliMUONVStore* GetErrorBuspatchTable() const {return fErrorBuspatchTable;}
    /// return the name of DAPedestal .root file
    const char* GetHistoFileName() const;
    /// load MuonTrk configuration from ascii dbfile
    void LoadConfig(const char* dbfile);
    /// sum pedestal values for mean and sigma determination
    void MakePed(Int_t bp,Int_t manu,Int_t ch,Int_t charge);

    /// set config flag
    void SetconfigDA(Int_t ind) {fConfig = ind;}
     /// set Histos flag
    void SetHistos(Int_t ind) {fHistos = ind;}
   /// set Nb of evt threshold to calculate pedestal
    void SetnEvthreshold(Int_t ind) {fNEvthreshold = ind;}
    /// set DA status (return code)
    void SetStatusDA(Int_t ind) {fStatusDA = ind;}
    /// get DA status (return code)
    Int_t GetStatusDA() const {return fStatusDA;}
    /// sorting flag
    void SetnSorting(Int_t ind) {fSorting = ind;}
    /// set specific  DA prefixname
    void SetprefixDA(const char* folder) { fPrefixDA=folder;}
     /// set specific LDC prefixname
    void SetprefixLDC(const char* folder) { fPrefixLDC=folder;}
   /// set the index of calibration runs
    void SetAliIndex(Int_t ind) {fIndex = ind;}
    /// Compute the pedestal data (mean, sigma)
    void Finalize();
    /// Create String to be put into file or AMORE DB
    void MakeASCIIoutput(ostream& out) const;
    /// Create Histograms
    void CreateControlHistos();
    /// Fill Histograms
    void MakeControlHistos();

    Int_t ADCMax() const { return 4095; }

protected:
    //    Int_t fN; ///<
    Int_t fNCurrentEvents; ///< Number of current events
    Int_t fNEvthreshold; ///< Nbevt threshold (pedestal calculation)
    Int_t fSorting; ///< sorting flag (pedestal values)
    Int_t fNEvents; ///< Number of events
    Int_t fRunNumber; ///< run number
    Int_t fNChannel; ///< Nb of channels (pads)
    Int_t fNManu; ///<  Nb of Manu
    Int_t fNManuConfig; ///<  Nb of Manu in the current detector configuration
    Int_t fConfig; ///< flag 1(0) for reading(or not) configuration ascii file
    Int_t fStatusDA; ///< DA return code (0=OK)
    Int_t fHistos; ///< flag for Histograms (0,1=standard, 2=ntuple with charge)
    AliMUONVStore* fErrorBuspatchTable; ///< Table for buspatches with parity errors 
    AliMUONVStore* fManuBuspatchTable; ///< Occupancy rate for each (buspatch, manu)
    AliMUONVStore* fManuBPoutofconfigTable; ///< (buspatch, manu) out of config
 
    TTimeStamp* fDate; ///< date
    ofstream* fFilcout; ///< .log output file
    TString fHistoFileName; ///< .root histo file
    AliMUONVStore* fPedestalStore; ///< data container:  (Pedmean,sigma) values for each (BP,manuId)
    Int_t fIndex; ///< calibration run index
    TString fPrefixDA; ///< specific DA prefixname
    TString fPrefixLDC; ///< specific LDC prefixname
    TFile* fHistoFile; ///< .root histo file
    TTree* fTree ; ///< charge Tree

  static const Int_t fgkADCMax; ///< max channel count
  
  private:
    /// Not implemented
    AliMUONPedestal(const AliMUONPedestal& rhs);
    /// Not implemented
    AliMUONPedestal& operator = (const AliMUONPedestal& rhs);

  ClassDef(AliMUONPedestal,6) // Pedestal computing for DA
};

#endif
 AliMUONPedestal.h:1
 AliMUONPedestal.h:2
 AliMUONPedestal.h:3
 AliMUONPedestal.h:4
 AliMUONPedestal.h:5
 AliMUONPedestal.h:6
 AliMUONPedestal.h:7
 AliMUONPedestal.h:8
 AliMUONPedestal.h:9
 AliMUONPedestal.h:10
 AliMUONPedestal.h:11
 AliMUONPedestal.h:12
 AliMUONPedestal.h:13
 AliMUONPedestal.h:14
 AliMUONPedestal.h:15
 AliMUONPedestal.h:16
 AliMUONPedestal.h:17
 AliMUONPedestal.h:18
 AliMUONPedestal.h:19
 AliMUONPedestal.h:20
 AliMUONPedestal.h:21
 AliMUONPedestal.h:22
 AliMUONPedestal.h:23
 AliMUONPedestal.h:24
 AliMUONPedestal.h:25
 AliMUONPedestal.h:26
 AliMUONPedestal.h:27
 AliMUONPedestal.h:28
 AliMUONPedestal.h:29
 AliMUONPedestal.h:30
 AliMUONPedestal.h:31
 AliMUONPedestal.h:32
 AliMUONPedestal.h:33
 AliMUONPedestal.h:34
 AliMUONPedestal.h:35
 AliMUONPedestal.h:36
 AliMUONPedestal.h:37
 AliMUONPedestal.h:38
 AliMUONPedestal.h:39
 AliMUONPedestal.h:40
 AliMUONPedestal.h:41
 AliMUONPedestal.h:42
 AliMUONPedestal.h:43
 AliMUONPedestal.h:44
 AliMUONPedestal.h:45
 AliMUONPedestal.h:46
 AliMUONPedestal.h:47
 AliMUONPedestal.h:48
 AliMUONPedestal.h:49
 AliMUONPedestal.h:50
 AliMUONPedestal.h:51
 AliMUONPedestal.h:52
 AliMUONPedestal.h:53
 AliMUONPedestal.h:54
 AliMUONPedestal.h:55
 AliMUONPedestal.h:56
 AliMUONPedestal.h:57
 AliMUONPedestal.h:58
 AliMUONPedestal.h:59
 AliMUONPedestal.h:60
 AliMUONPedestal.h:61
 AliMUONPedestal.h:62
 AliMUONPedestal.h:63
 AliMUONPedestal.h:64
 AliMUONPedestal.h:65
 AliMUONPedestal.h:66
 AliMUONPedestal.h:67
 AliMUONPedestal.h:68
 AliMUONPedestal.h:69
 AliMUONPedestal.h:70
 AliMUONPedestal.h:71
 AliMUONPedestal.h:72
 AliMUONPedestal.h:73
 AliMUONPedestal.h:74
 AliMUONPedestal.h:75
 AliMUONPedestal.h:76
 AliMUONPedestal.h:77
 AliMUONPedestal.h:78
 AliMUONPedestal.h:79
 AliMUONPedestal.h:80
 AliMUONPedestal.h:81
 AliMUONPedestal.h:82
 AliMUONPedestal.h:83
 AliMUONPedestal.h:84
 AliMUONPedestal.h:85
 AliMUONPedestal.h:86
 AliMUONPedestal.h:87
 AliMUONPedestal.h:88
 AliMUONPedestal.h:89
 AliMUONPedestal.h:90
 AliMUONPedestal.h:91
 AliMUONPedestal.h:92
 AliMUONPedestal.h:93
 AliMUONPedestal.h:94
 AliMUONPedestal.h:95
 AliMUONPedestal.h:96
 AliMUONPedestal.h:97
 AliMUONPedestal.h:98
 AliMUONPedestal.h:99
 AliMUONPedestal.h:100
 AliMUONPedestal.h:101
 AliMUONPedestal.h:102
 AliMUONPedestal.h:103
 AliMUONPedestal.h:104
 AliMUONPedestal.h:105
 AliMUONPedestal.h:106
 AliMUONPedestal.h:107
 AliMUONPedestal.h:108
 AliMUONPedestal.h:109
 AliMUONPedestal.h:110
 AliMUONPedestal.h:111
 AliMUONPedestal.h:112
 AliMUONPedestal.h:113
 AliMUONPedestal.h:114
 AliMUONPedestal.h:115
 AliMUONPedestal.h:116
 AliMUONPedestal.h:117
 AliMUONPedestal.h:118
 AliMUONPedestal.h:119
 AliMUONPedestal.h:120
 AliMUONPedestal.h:121
 AliMUONPedestal.h:122
 AliMUONPedestal.h:123
 AliMUONPedestal.h:124
 AliMUONPedestal.h:125
 AliMUONPedestal.h:126