ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

// $Id$

#include "AliMUONQADataMakerSim.h"
#include "AliMUONHit.h"  
#include "AliMUONDigit.h"  
#include "AliMUONVHitStore.h"
#include "AliMUONVDigitStore.h"

// --- AliRoot header files ---
#include "AliLog.h"
#include "AliQAChecker.h"

// --- ROOT system ---
#include <TClonesArray.h>
#include <TFile.h> 
#include <TH1F.h> 
#include <TH1I.h> 
#include <TH2F.h> 
#include <TTree.h>

//-----------------------------------------------------------------------------
/// \class AliMUONQADataMakerSim
///
/// MUON base class for quality assurance data (histo) maker
///
/// \author C. Finck

/// \cond CLASSIMP
ClassImp(AliMUONQADataMakerSim)
/// \endcond
           
//____________________________________________________________________________ 
AliMUONQADataMakerSim::AliMUONQADataMakerSim() : 
    AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kMUON), "MUON Quality Assurance Data Maker"),
    fHitStore(0x0),
    fDigitStore(0x0)   
{
  /// Default constructor

      AliDebug(AliQAv1::GetQADebugLevel(),"");
}

//____________________________________________________________________________ 
AliMUONQADataMakerSim::AliMUONQADataMakerSim(const AliMUONQADataMakerSim& qadm) :
    AliQADataMakerSim(),
  fHitStore(0x0),
  fDigitStore(0x0)
{
  /// Copy constructor

    AliDebug(AliQAv1::GetQADebugLevel(),"");

    if ( qadm.fHitStore ) 
    {
      fHitStore = static_cast<AliMUONVHitStore*>(qadm.fHitStore->Clone());
    }
    if ( qadm.fDigitStore ) 
    {
      fDigitStore = static_cast<AliMUONVDigitStore*>(qadm.fDigitStore->Clone());
    }
    SetName((const char*)qadm.GetName()) ; 
    SetTitle((const char*)qadm.GetTitle()); 
}

//__________________________________________________________________
AliMUONQADataMakerSim& AliMUONQADataMakerSim::operator = (const AliMUONQADataMakerSim& qadm )
{
  /// Assignment operator

  AliDebug(AliQAv1::GetQADebugLevel(),"");

    this->~AliMUONQADataMakerSim();
    new(this) AliMUONQADataMakerSim(qadm);
    return *this;
}

//__________________________________________________________________
AliMUONQADataMakerSim::~AliMUONQADataMakerSim()
{
  /// Destructor

  AliDebug(AliQAv1::GetQADebugLevel(),"");

  delete fHitStore;
  delete fDigitStore;
}

//__________________________________________________________________
void AliMUONQADataMakerSim::InitHits() 
{
  /// Initialized hit spectra
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  TH1F* h0 = new TH1F("hHitDetElem", "DetElemId distribution in Hits;Detection element Id;Counts", 1400, 100., 1500.); 
  Add2HitsList(h0, 0, !expert, image);

  TH1F* h1 = new TH1F("hHitPtot", "P distribution in Hits;P [erg];Counts ", 300, 0., 300.); 
  Add2HitsList(h1, 1, !expert, image);
  //
  ClonePerTrigClass(AliQAv1::kHITS); // this should be the last line
} 

//__________________________________________________________________
void AliMUONQADataMakerSim::InitSDigits() 
{
  /// Initialized SDigits spectra
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  TH1I* h0 = new TH1I("hSDigitsDetElem", "Detection element distribution in SDigits;Detection element Id;Counts",  1400, 100, 1500); 
  Add2SDigitsList(h0, 0, !expert, image);

  TH1F* h1 = new TH1F("hSDigitsCharge", "Charge distribution in SDigits;Charge [??];Counts", 4096, 0, 4095); 
  Add2SDigitsList(h1, 1, !expert, image);
  //
  ClonePerTrigClass(AliQAv1::kSDIGITS); // this should be the last line
}  

//__________________________________________________________________
void AliMUONQADataMakerSim::InitDigits() 
{
  /// Initialized Digits spectra 
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  TH1I* h0 = new TH1I("hDigitsDetElem", "Detection element distribution in Digits;Detection element Id;Counts",  1400, 100, 1500); 
  Add2DigitsList(h0, 0, !expert, image);

  TH1I* h1 = new TH1I("hDigitsADC", "ADC distribution in Digits;ACD value;Counts", 4096, 0, 4095); 
  Add2DigitsList(h1, 1, !expert, image);  
  //
  ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
} 

//__________________________________________________________________
void AliMUONQADataMakerSim::MakeHits(TTree* hitsTree)        
{
  /// makes data from Hits

  if (!fHitStore)
    fHitStore = AliMUONVHitStore::Create(*hitsTree);
  fHitStore->Connect(*hitsTree, false);
  hitsTree->GetEvent(0);
    
  TIter next(fHitStore->CreateIterator());

  AliMUONHit* hit = 0x0;

  while ( ( hit = static_cast<AliMUONHit*>(next()) ) )
  {
    FillHitsData(0,hit->DetElemId());
    FillHitsData(1,hit->Momentum());
  }
  //
  IncEvCountCycleHits();
  IncEvCountTotalHits();
  //
}

//__________________________________________________________________
void AliMUONQADataMakerSim::MakeSDigits(TTree* sdigitsTree)        
{
  /// makes data from SDigits

  if (!fDigitStore)
    fDigitStore = AliMUONVDigitStore::Create(*sdigitsTree);
  fDigitStore->Connect(*sdigitsTree, false);
  sdigitsTree->GetEvent(0);
    
  TIter next(fDigitStore->CreateIterator());

  AliMUONVDigit* dig = 0x0;

  while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) )
  {
    FillSDigitsData(0,dig->DetElemId());
    FillSDigitsData(1,dig->Charge());
  }
  //
  IncEvCountCycleSDigits();
  IncEvCountTotalSDigits();
  //
} 

//__________________________________________________________________
void AliMUONQADataMakerSim::MakeDigits(TTree* digitsTree)         
{
   /// makes data from Digits
  
  if (!fDigitStore)
    fDigitStore = AliMUONVDigitStore::Create(*digitsTree);
  fDigitStore->Connect(*digitsTree, false);
  digitsTree->GetEvent(0);
    
  TIter next(fDigitStore->CreateIterator());

  AliMUONVDigit* dig = 0x0;

  while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) )
  {
    FillDigitsData(0,dig->DetElemId());
    FillDigitsData(1,dig->ADC());
  }
  //
  IncEvCountCycleDigits();
  IncEvCountTotalDigits();
  //
}
      
//____________________________________________________________________________ 
void AliMUONQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list)
{
    ///Detector specific actions at end of cycle
    // do the QA checking
  ResetEventTrigClasses();
  AliQAChecker::Instance()->Run(AliQAv1::kMUON, task, list) ;  
}


//____________________________________________________________________________ 
void AliMUONQADataMakerSim::StartOfDetectorCycle()
{
    /// Detector specific actions at start of cycle
  
}
 AliMUONQADataMakerSim.cxx:1
 AliMUONQADataMakerSim.cxx:2
 AliMUONQADataMakerSim.cxx:3
 AliMUONQADataMakerSim.cxx:4
 AliMUONQADataMakerSim.cxx:5
 AliMUONQADataMakerSim.cxx:6
 AliMUONQADataMakerSim.cxx:7
 AliMUONQADataMakerSim.cxx:8
 AliMUONQADataMakerSim.cxx:9
 AliMUONQADataMakerSim.cxx:10
 AliMUONQADataMakerSim.cxx:11
 AliMUONQADataMakerSim.cxx:12
 AliMUONQADataMakerSim.cxx:13
 AliMUONQADataMakerSim.cxx:14
 AliMUONQADataMakerSim.cxx:15
 AliMUONQADataMakerSim.cxx:16
 AliMUONQADataMakerSim.cxx:17
 AliMUONQADataMakerSim.cxx:18
 AliMUONQADataMakerSim.cxx:19
 AliMUONQADataMakerSim.cxx:20
 AliMUONQADataMakerSim.cxx:21
 AliMUONQADataMakerSim.cxx:22
 AliMUONQADataMakerSim.cxx:23
 AliMUONQADataMakerSim.cxx:24
 AliMUONQADataMakerSim.cxx:25
 AliMUONQADataMakerSim.cxx:26
 AliMUONQADataMakerSim.cxx:27
 AliMUONQADataMakerSim.cxx:28
 AliMUONQADataMakerSim.cxx:29
 AliMUONQADataMakerSim.cxx:30
 AliMUONQADataMakerSim.cxx:31
 AliMUONQADataMakerSim.cxx:32
 AliMUONQADataMakerSim.cxx:33
 AliMUONQADataMakerSim.cxx:34
 AliMUONQADataMakerSim.cxx:35
 AliMUONQADataMakerSim.cxx:36
 AliMUONQADataMakerSim.cxx:37
 AliMUONQADataMakerSim.cxx:38
 AliMUONQADataMakerSim.cxx:39
 AliMUONQADataMakerSim.cxx:40
 AliMUONQADataMakerSim.cxx:41
 AliMUONQADataMakerSim.cxx:42
 AliMUONQADataMakerSim.cxx:43
 AliMUONQADataMakerSim.cxx:44
 AliMUONQADataMakerSim.cxx:45
 AliMUONQADataMakerSim.cxx:46
 AliMUONQADataMakerSim.cxx:47
 AliMUONQADataMakerSim.cxx:48
 AliMUONQADataMakerSim.cxx:49
 AliMUONQADataMakerSim.cxx:50
 AliMUONQADataMakerSim.cxx:51
 AliMUONQADataMakerSim.cxx:52
 AliMUONQADataMakerSim.cxx:53
 AliMUONQADataMakerSim.cxx:54
 AliMUONQADataMakerSim.cxx:55
 AliMUONQADataMakerSim.cxx:56
 AliMUONQADataMakerSim.cxx:57
 AliMUONQADataMakerSim.cxx:58
 AliMUONQADataMakerSim.cxx:59
 AliMUONQADataMakerSim.cxx:60
 AliMUONQADataMakerSim.cxx:61
 AliMUONQADataMakerSim.cxx:62
 AliMUONQADataMakerSim.cxx:63
 AliMUONQADataMakerSim.cxx:64
 AliMUONQADataMakerSim.cxx:65
 AliMUONQADataMakerSim.cxx:66
 AliMUONQADataMakerSim.cxx:67
 AliMUONQADataMakerSim.cxx:68
 AliMUONQADataMakerSim.cxx:69
 AliMUONQADataMakerSim.cxx:70
 AliMUONQADataMakerSim.cxx:71
 AliMUONQADataMakerSim.cxx:72
 AliMUONQADataMakerSim.cxx:73
 AliMUONQADataMakerSim.cxx:74
 AliMUONQADataMakerSim.cxx:75
 AliMUONQADataMakerSim.cxx:76
 AliMUONQADataMakerSim.cxx:77
 AliMUONQADataMakerSim.cxx:78
 AliMUONQADataMakerSim.cxx:79
 AliMUONQADataMakerSim.cxx:80
 AliMUONQADataMakerSim.cxx:81
 AliMUONQADataMakerSim.cxx:82
 AliMUONQADataMakerSim.cxx:83
 AliMUONQADataMakerSim.cxx:84
 AliMUONQADataMakerSim.cxx:85
 AliMUONQADataMakerSim.cxx:86
 AliMUONQADataMakerSim.cxx:87
 AliMUONQADataMakerSim.cxx:88
 AliMUONQADataMakerSim.cxx:89
 AliMUONQADataMakerSim.cxx:90
 AliMUONQADataMakerSim.cxx:91
 AliMUONQADataMakerSim.cxx:92
 AliMUONQADataMakerSim.cxx:93
 AliMUONQADataMakerSim.cxx:94
 AliMUONQADataMakerSim.cxx:95
 AliMUONQADataMakerSim.cxx:96
 AliMUONQADataMakerSim.cxx:97
 AliMUONQADataMakerSim.cxx:98
 AliMUONQADataMakerSim.cxx:99
 AliMUONQADataMakerSim.cxx:100
 AliMUONQADataMakerSim.cxx:101
 AliMUONQADataMakerSim.cxx:102
 AliMUONQADataMakerSim.cxx:103
 AliMUONQADataMakerSim.cxx:104
 AliMUONQADataMakerSim.cxx:105
 AliMUONQADataMakerSim.cxx:106
 AliMUONQADataMakerSim.cxx:107
 AliMUONQADataMakerSim.cxx:108
 AliMUONQADataMakerSim.cxx:109
 AliMUONQADataMakerSim.cxx:110
 AliMUONQADataMakerSim.cxx:111
 AliMUONQADataMakerSim.cxx:112
 AliMUONQADataMakerSim.cxx:113
 AliMUONQADataMakerSim.cxx:114
 AliMUONQADataMakerSim.cxx:115
 AliMUONQADataMakerSim.cxx:116
 AliMUONQADataMakerSim.cxx:117
 AliMUONQADataMakerSim.cxx:118
 AliMUONQADataMakerSim.cxx:119
 AliMUONQADataMakerSim.cxx:120
 AliMUONQADataMakerSim.cxx:121
 AliMUONQADataMakerSim.cxx:122
 AliMUONQADataMakerSim.cxx:123
 AliMUONQADataMakerSim.cxx:124
 AliMUONQADataMakerSim.cxx:125
 AliMUONQADataMakerSim.cxx:126
 AliMUONQADataMakerSim.cxx:127
 AliMUONQADataMakerSim.cxx:128
 AliMUONQADataMakerSim.cxx:129
 AliMUONQADataMakerSim.cxx:130
 AliMUONQADataMakerSim.cxx:131
 AliMUONQADataMakerSim.cxx:132
 AliMUONQADataMakerSim.cxx:133
 AliMUONQADataMakerSim.cxx:134
 AliMUONQADataMakerSim.cxx:135
 AliMUONQADataMakerSim.cxx:136
 AliMUONQADataMakerSim.cxx:137
 AliMUONQADataMakerSim.cxx:138
 AliMUONQADataMakerSim.cxx:139
 AliMUONQADataMakerSim.cxx:140
 AliMUONQADataMakerSim.cxx:141
 AliMUONQADataMakerSim.cxx:142
 AliMUONQADataMakerSim.cxx:143
 AliMUONQADataMakerSim.cxx:144
 AliMUONQADataMakerSim.cxx:145
 AliMUONQADataMakerSim.cxx:146
 AliMUONQADataMakerSim.cxx:147
 AliMUONQADataMakerSim.cxx:148
 AliMUONQADataMakerSim.cxx:149
 AliMUONQADataMakerSim.cxx:150
 AliMUONQADataMakerSim.cxx:151
 AliMUONQADataMakerSim.cxx:152
 AliMUONQADataMakerSim.cxx:153
 AliMUONQADataMakerSim.cxx:154
 AliMUONQADataMakerSim.cxx:155
 AliMUONQADataMakerSim.cxx:156
 AliMUONQADataMakerSim.cxx:157
 AliMUONQADataMakerSim.cxx:158
 AliMUONQADataMakerSim.cxx:159
 AliMUONQADataMakerSim.cxx:160
 AliMUONQADataMakerSim.cxx:161
 AliMUONQADataMakerSim.cxx:162
 AliMUONQADataMakerSim.cxx:163
 AliMUONQADataMakerSim.cxx:164
 AliMUONQADataMakerSim.cxx:165
 AliMUONQADataMakerSim.cxx:166
 AliMUONQADataMakerSim.cxx:167
 AliMUONQADataMakerSim.cxx:168
 AliMUONQADataMakerSim.cxx:169
 AliMUONQADataMakerSim.cxx:170
 AliMUONQADataMakerSim.cxx:171
 AliMUONQADataMakerSim.cxx:172
 AliMUONQADataMakerSim.cxx:173
 AliMUONQADataMakerSim.cxx:174
 AliMUONQADataMakerSim.cxx:175
 AliMUONQADataMakerSim.cxx:176
 AliMUONQADataMakerSim.cxx:177
 AliMUONQADataMakerSim.cxx:178
 AliMUONQADataMakerSim.cxx:179
 AliMUONQADataMakerSim.cxx:180
 AliMUONQADataMakerSim.cxx:181
 AliMUONQADataMakerSim.cxx:182
 AliMUONQADataMakerSim.cxx:183
 AliMUONQADataMakerSim.cxx:184
 AliMUONQADataMakerSim.cxx:185
 AliMUONQADataMakerSim.cxx:186
 AliMUONQADataMakerSim.cxx:187
 AliMUONQADataMakerSim.cxx:188
 AliMUONQADataMakerSim.cxx:189
 AliMUONQADataMakerSim.cxx:190
 AliMUONQADataMakerSim.cxx:191
 AliMUONQADataMakerSim.cxx:192
 AliMUONQADataMakerSim.cxx:193
 AliMUONQADataMakerSim.cxx:194
 AliMUONQADataMakerSim.cxx:195
 AliMUONQADataMakerSim.cxx:196
 AliMUONQADataMakerSim.cxx:197
 AliMUONQADataMakerSim.cxx:198
 AliMUONQADataMakerSim.cxx:199
 AliMUONQADataMakerSim.cxx:200
 AliMUONQADataMakerSim.cxx:201
 AliMUONQADataMakerSim.cxx:202
 AliMUONQADataMakerSim.cxx:203
 AliMUONQADataMakerSim.cxx:204
 AliMUONQADataMakerSim.cxx:205
 AliMUONQADataMakerSim.cxx:206
 AliMUONQADataMakerSim.cxx:207
 AliMUONQADataMakerSim.cxx:208
 AliMUONQADataMakerSim.cxx:209
 AliMUONQADataMakerSim.cxx:210
 AliMUONQADataMakerSim.cxx:211
 AliMUONQADataMakerSim.cxx:212
 AliMUONQADataMakerSim.cxx:213
 AliMUONQADataMakerSim.cxx:214
 AliMUONQADataMakerSim.cxx:215
 AliMUONQADataMakerSim.cxx:216
 AliMUONQADataMakerSim.cxx:217
 AliMUONQADataMakerSim.cxx:218
 AliMUONQADataMakerSim.cxx:219
 AliMUONQADataMakerSim.cxx:220
 AliMUONQADataMakerSim.cxx:221
 AliMUONQADataMakerSim.cxx:222
 AliMUONQADataMakerSim.cxx:223
 AliMUONQADataMakerSim.cxx:224
 AliMUONQADataMakerSim.cxx:225
 AliMUONQADataMakerSim.cxx:226
 AliMUONQADataMakerSim.cxx:227
 AliMUONQADataMakerSim.cxx:228
 AliMUONQADataMakerSim.cxx:229
 AliMUONQADataMakerSim.cxx:230
 AliMUONQADataMakerSim.cxx:231
 AliMUONQADataMakerSim.cxx:232
 AliMUONQADataMakerSim.cxx:233
 AliMUONQADataMakerSim.cxx:234
 AliMUONQADataMakerSim.cxx:235
 AliMUONQADataMakerSim.cxx:236
 AliMUONQADataMakerSim.cxx:237
 AliMUONQADataMakerSim.cxx:238
 AliMUONQADataMakerSim.cxx:239
 AliMUONQADataMakerSim.cxx:240
 AliMUONQADataMakerSim.cxx:241