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: AliVZEROQADataMakerSim.cxx 23123 2007-12-18 09:08:18Z hristov $ */

//---
//  Produces the data needed to calculate the quality assurance. 
//  All data must be mergeable objects.
//  Author : BC
//---

// --- ROOT system ---
#include <TClonesArray.h>
#include <TFile.h> 
#include <TH1F.h> 
#include <TDirectory.h>
// --- Standard library ---

// --- AliRoot header files ---
#include "AliESDEvent.h"
#include "AliLog.h"
#include "AliVZEROdigit.h" 
#include "AliVZEROhit.h"
#include "AliVZEROQADataMakerSim.h"
#include "AliQAChecker.h"

ClassImp(AliVZEROQADataMakerSim)
           
//____________________________________________________________________________ 
  AliVZEROQADataMakerSim::AliVZEROQADataMakerSim() : 
  AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kVZERO), "VZERO Quality Assurance Data Maker")

{
  // constructor

  
}

//____________________________________________________________________________ 
AliVZEROQADataMakerSim::AliVZEROQADataMakerSim(const AliVZEROQADataMakerSim& qadm) :
  AliQADataMakerSim() 
{
  //copy constructor 

  SetName((const char*)qadm.GetName()) ; 
  SetTitle((const char*)qadm.GetTitle()); 
}

//__________________________________________________________________
AliVZEROQADataMakerSim& AliVZEROQADataMakerSim::operator = (const AliVZEROQADataMakerSim& qadm )
{
  // Assign operator.
  this->~AliVZEROQADataMakerSim();
  new(this) AliVZEROQADataMakerSim(qadm);
  return *this;
}
//____________________________________________________________________________
void AliVZEROQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
{
  //Detector specific actions at end of cycle
  // do the QA checking
  ResetEventTrigClasses();
  AliQAChecker::Instance()->Run(AliQAv1::kVZERO, task, list) ;
}

 
//____________________________________________________________________________ 
void AliVZEROQADataMakerSim::InitHits()
{
 
  // create Hits histograms in Hits subdir
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  TH1I * h0 = new TH1I("hHitMultiplicity", "Hit multiplicity distribution in VZERO;# of Hits;Entries", 300, 0, 299) ; 
  h0->Sumw2() ;
  Add2HitsList(h0, 0, !expert, image) ;  
  
  TH1I * h1 = new TH1I("hHitCellNumber", "Hit cell distribution in VZERO;# of Hits;Entries", 80, 0, 79) ; 
  h1->Sumw2() ;
  Add2HitsList(h1, 1, !expert, image) ;  
  //
  ClonePerTrigClass(AliQAv1::kHITS); // this should be the last line    
}

//____________________________________________________________________________ 
void AliVZEROQADataMakerSim::InitDigits()
{
  // create Digits histograms in Digits subdir
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  TH1I *fhDigTDC[64]; 
  TH1I *fhDigADC[64]; 

  // create Digits histograms in Digits subdir
  TH1I * h0 = new TH1I("hDigitMultiplicity", "Digits multiplicity distribution in VZERO;# of Digits;Entries", 100, 0, 99) ; 
  h0->Sumw2() ;
  Add2DigitsList(h0, 0, !expert, image) ;
  
  for (Int_t i=0; i<64; i++)
    {
       fhDigTDC[i] = new TH1I(Form("hDigitTDC%d", i),Form("Digit TDC in cell %d; TDC value;Entries",i),300,0.,149.);
       fhDigADC[i]= new TH1I(Form("hDigitADC%d", i),Form("Digit ADC in cell %d;ADC value;Entries",i),1024,0.,1023.);
       
       Add2DigitsList(fhDigTDC[i],i+1, !expert, image);
       Add2DigitsList(fhDigADC[i],i+1+64, !expert, image);  
     }  
  //
  ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
}


//____________________________________________________________________________
void AliVZEROQADataMakerSim::MakeHits()
{
	//make QA data from Hits

  Int_t nhits = fHitsArray->GetEntriesFast();
  FillHitsData(0,nhits) ;    // fills Hit multiplicity
  for (Int_t ihit=0;ihit<nhits;ihit++) 
    {
	   AliVZEROhit  * VZEROHit   = (AliVZEROhit*) fHitsArray->UncheckedAt(ihit);
	   if (!VZEROHit) {
 	      AliError("The unchecked hit doesn't exist");
	      break;
	   }
	   FillHitsData(1,VZEROHit->Cell());
	}
}


//____________________________________________________________________________

void AliVZEROQADataMakerSim::MakeHits(TTree *hitTree)
{
  //fills QA histos for Hits
 if (fHitsArray)
   fHitsArray->Clear() ; 
  else 
    fHitsArray = new TClonesArray("AliVZEROhit", 1000);
  
  TBranch * branch = hitTree->GetBranch("VZERO") ;
  if ( ! branch ) {
    AliWarning("VZERO branch in Hit Tree not found") ;
  } else {

   if (branch) {
      branch->SetAddress(&fHitsArray);
    }else{
      AliError("Branch VZERO hit not found");
      exit(111);
    } 
    // Check id histograms already created for this Event Specie
    if ( ! GetHitsData(0) )
      InitHits() ;
    
    Int_t ntracks    = (Int_t) hitTree->GetEntries();
    
    if (ntracks<=0) return;
    // Start loop on tracks in the hits containers
    for (Int_t track=0; track<ntracks;track++) {
      branch->GetEntry(track);
      Int_t nhits = fHitsArray->GetEntriesFast();
      FillHitsData(0,nhits) ;    // fills Hit multiplicity
      for (Int_t ihit=0;ihit<nhits;ihit++) 
	{
	  AliVZEROhit  * VZEROHit   = (AliVZEROhit*) fHitsArray->UncheckedAt(ihit);
	  if (!VZEROHit) {
 	    AliError("The unchecked hit doesn't exist");
	    break;
	  }
	  FillHitsData(1,VZEROHit->Cell());	 
	}
    }
  }
  //
  IncEvCountCycleHits();
  IncEvCountTotalHits();
  //
}


//____________________________________________________________________________
void AliVZEROQADataMakerSim::MakeDigits()
{
  // makes data from Digits

  FillDigitsData(0,fDigitsArray->GetEntriesFast()) ; 
  TIter next(fDigitsArray) ; 
    AliVZEROdigit *VZERODigit ; 
    while ( (VZERODigit = dynamic_cast<AliVZEROdigit *>(next())) ) {
         Int_t   PMNumber  = VZERODigit->PMNumber();         
         FillDigitsData(PMNumber +1, VZERODigit->Time()) ;    // in 100 of picoseconds
	 FillDigitsData(PMNumber +1+64, VZERODigit->ADC()) ;
    }  
}


//____________________________________________________________________________
void AliVZEROQADataMakerSim::MakeDigits(TTree *digitTree)
{
    // makes data from Digit Tree
	
  if (fDigitsArray)
    fDigitsArray->Clear() ; 
  else 
    fDigitsArray = new TClonesArray("AliVZEROdigit", 1000) ; 

    TBranch * branch = digitTree->GetBranch("VZERODigit") ;
    if ( ! branch ) {
         AliWarning("VZERO branch in Digit Tree not found") ; 
    } else {
         branch->SetAddress(&fDigitsArray) ;
         branch->GetEntry(0) ; 
         MakeDigits() ; 
    }  
    //
    IncEvCountCycleDigits();
    IncEvCountTotalDigits();
    //    
}


//____________________________________________________________________________
void AliVZEROQADataMakerSim::StartOfDetectorCycle()
{
  //Detector specific actions at start of cycle

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