--- /dev/null
+/**************************************************************************
+ * 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. *
+ **************************************************************************/
+
+/*
+ Checks the quality assurance.
+ By comparing with reference data
+
+ Based on PHOS code written by
+ Y. Schutz CERN July 2007
+*/
+
+// --- ROOT system ---
+#include <TClass.h>
+#include <TH1F.h>
+#include <TH1I.h>
+#include <TIterator.h>
+#include <TKey.h>
+#include <TFile.h>
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliLog.h"
+#include "AliQA.h"
+#include "AliQAChecker.h"
+#include "AliEMCALQAChecker.h"
+
+ClassImp(AliEMCALQAChecker)
+
+//__________________________________________________________________
+AliEMCALQAChecker& AliEMCALQAChecker::operator = (const AliEMCALQAChecker& qac )
+{
+ // Equal operator.
+ this->~AliEMCALQAChecker();
+ new(this) AliEMCALQAChecker(qac);
+ return *this;
+}
+
--- /dev/null
+#ifndef ALIEMCALQACHECKER_H
+#define ALIEMCALQACHECKER_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+
+/*
+ Checks the quality assurance.
+ By comparing with reference data
+
+ Based on PHOS code written by
+ Y. Schutz CERN July 2007
+*/
+
+
+// --- ROOT system ---
+class TFile ;
+class TH1F ;
+class TH1I ;
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliQACheckerBase.h"
+class AliEMCALLoader ;
+
+class AliEMCALQAChecker: public AliQACheckerBase {
+
+public:
+ AliEMCALQAChecker() : AliQACheckerBase("EMCAL","EMCAL Quality Assurance Data Maker") {;} // ctor
+ AliEMCALQAChecker(const AliEMCALQAChecker& qac) : AliQACheckerBase(qac.GetName(), qac.GetTitle()) {;} // cpy ctor
+ AliEMCALQAChecker& operator = (const AliEMCALQAChecker& qac) ;
+ virtual ~AliEMCALQAChecker() {;} // dtor
+
+private:
+
+ ClassDef(AliEMCALQAChecker,1) // description
+
+};
+
+#endif // AliEMCALQAChecker_H
--- /dev/null
+/**************************************************************************
+ * 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. *
+ **************************************************************************/
+
+/*
+ Produces the data needed to calculate the quality assurance.
+ All data must be mergeable objects.
+
+ Based on PHOS code written by
+ Y. Schutz CERN July 2007
+*/
+
+// --- ROOT system ---
+#include <TClonesArray.h>
+#include <TFile.h>
+#include <TH1F.h>
+#include <TH1I.h>
+#include <TH2F.h>
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliESDCaloCluster.h"
+#include "AliESDEvent.h"
+#include "AliLog.h"
+#include "AliEMCALDigit.h"
+#include "AliEMCALHit.h"
+#include "AliEMCALQADataMaker.h"
+#include "AliQAChecker.h"
+#include "AliEMCALRecPoint.h"
+#include "AliEMCALRawUtils.h"
+#include "AliEMCALReconstructor.h"
+#include "AliEMCALRecParam.h"
+
+ClassImp(AliEMCALQADataMaker)
+
+//____________________________________________________________________________
+ AliEMCALQADataMaker::AliEMCALQADataMaker() :
+ AliQADataMaker(AliQA::GetDetName(AliQA::kEMCAL), "EMCAL Quality Assurance Data Maker")
+{
+ // ctor
+}
+
+//____________________________________________________________________________
+AliEMCALQADataMaker::AliEMCALQADataMaker(const AliEMCALQADataMaker& qadm) :
+ AliQADataMaker()
+{
+ //copy ctor
+ SetName((const char*)qadm.GetName()) ;
+ SetTitle((const char*)qadm.GetTitle());
+}
+
+//__________________________________________________________________
+AliEMCALQADataMaker& AliEMCALQADataMaker::operator = (const AliEMCALQADataMaker& qadm )
+{
+ // Equal operator.
+ this->~AliEMCALQADataMaker();
+ new(this) AliEMCALQADataMaker(qadm);
+ return *this;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::EndOfDetectorCycle(AliQA::TASKINDEX task, TObjArray * list)
+{
+ //Detector specific actions at end of cycle
+ // do the QA checking
+ AliQAChecker::Instance()->Run(AliQA::kEMCAL, task, list) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::InitESDs()
+{
+ //create ESDs histograms in ESDs subdir
+
+ TH1F * h0 = new TH1F("hEmcalESDs", "ESDs energy distribution in EMCAL", 100, 0., 100.) ;
+ h0->Sumw2() ;
+ Add2ESDsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalESDsMul", "ESDs multiplicity distribution in EMCAL", 100, 0., 100) ;
+ h1->Sumw2() ;
+ Add2ESDsList(h1, 1) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::InitHits()
+{
+ // create Hits histograms in Hits subdir
+ TH1F * h0 = new TH1F("hEmcalHits", "Hits energy distribution in EMCAL", 100, 0., 100.) ;
+ h0->Sumw2() ;
+ Add2HitsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalHitsMul", "Hits multiplicity distribution in EMCAL", 500, 0., 10000) ;
+ h1->Sumw2() ;
+ Add2HitsList(h1, 1) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::InitDigits()
+{
+ // create Digits histograms in Digits subdir
+ TH1I * h0 = new TH1I("hEmcalDigits", "Digits amplitude distribution in EMCAL", 500, 0, 5000) ;
+ h0->Sumw2() ;
+ Add2DigitsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalDigitsMul", "Digits multiplicity distribution in EMCAL", 500, 0, 1000) ;
+ h1->Sumw2() ;
+ Add2DigitsList(h1, 1) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::InitRecPoints()
+{
+ // create Reconstructed Points histograms in RecPoints subdir
+ TH1F * h0 = new TH1F("hEmcalRecPoints", "RecPoints energy distribution in EMCAL", 100, 0., 100.) ;
+ h0->Sumw2() ;
+ Add2RecPointsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalRecPointsMul", "RecPoints multiplicity distribution in EMCAL", 100, 0, 100) ;
+ h1->Sumw2() ;
+ Add2RecPointsList(h1, 1) ;
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::InitRaws()
+{
+ AliInfo(Form("Raw QA infor for EMCAL not yet implemented"));
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::InitSDigits()
+{
+ // create SDigits histograms in SDigits subdir
+ TH1F * h0 = new TH1F("hEmcalSDigits", "SDigits energy distribution in EMCAL", 100, 0., 100.) ;
+ h0->Sumw2() ;
+ Add2SDigitsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalSDigitsMul", "SDigits multiplicity distribution in EMCAL", 500, 0, 10000) ;
+ h1->Sumw2() ;
+ Add2SDigitsList(h1, 1) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeESDs(AliESDEvent * esd)
+{
+ // make QA data from ESDs
+
+ Int_t count = 0 ;
+ for ( Int_t index = 0; index < esd->GetNumberOfCaloClusters() ; index++ ) {
+ AliESDCaloCluster * clu = esd->GetCaloCluster(index) ;
+ if ( clu->IsEMCAL() ) {
+ GetESDsData(0)->Fill(clu->E()) ;
+ count++ ;
+ }
+ }
+ GetESDsData(1)->Fill(count) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeHits(TClonesArray * hits)
+{
+ //make QA data from Hits
+
+ GetHitsData(1)->Fill(hits->GetEntriesFast()) ;
+ TIter next(hits) ;
+ AliEMCALHit * hit ;
+ while ( (hit = dynamic_cast<AliEMCALHit *>(next())) ) {
+ GetHitsData(0)->Fill( hit->GetEnergy()) ;
+ }
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeHits(TTree * hitTree)
+{
+ // make QA data from Hit Tree
+
+ TClonesArray * hits = new TClonesArray("AliEMCALHit", 1000);
+
+ TBranch * branch = hitTree->GetBranch("EMCAL") ;
+ if ( ! branch ) {
+ AliWarning("EMCAL branch in Hit Tree not found") ;
+ } else {
+ TClonesArray * tmp = new TClonesArray("AliEMCALHit", 1000) ;
+ branch->SetAddress(&tmp) ;
+ Int_t index = 0 ;
+ for (Int_t ientry = 0 ; ientry < branch->GetEntries() ; ientry++) {
+ branch->GetEntry(ientry) ;
+ for (Int_t ihit = 0 ; ihit < tmp->GetEntries() ; ihit++) {
+ AliEMCALHit * hit = dynamic_cast<AliEMCALHit *> (tmp->At(ihit)) ;
+ new((*hits)[index]) AliEMCALHit(*hit) ;
+ index++ ;
+ }
+ }
+ tmp->Delete() ;
+ delete tmp ;
+ MakeHits(hits) ;
+ }
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeDigits(TClonesArray * digits)
+{
+ // makes data from Digits
+
+ GetDigitsData(1)->Fill(digits->GetEntriesFast()) ;
+ TIter next(digits) ;
+ AliEMCALDigit * digit ;
+ while ( (digit = dynamic_cast<AliEMCALDigit *>(next())) ) {
+ GetDigitsData(0)->Fill( digit->GetAmp()) ;
+ }
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeDigits(TTree * digitTree)
+{
+ // makes data from Digit Tree
+ TClonesArray * digits = new TClonesArray("AliEMCALDigit", 1000) ;
+
+ TBranch * branch = digitTree->GetBranch("EMCAL") ;
+ if ( ! branch ) {
+ AliWarning("EMCAL branch in Digit Tree not found") ;
+ } else {
+ branch->SetAddress(&digits) ;
+ branch->GetEntry(0) ;
+ MakeDigits(digits) ;
+ }
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeRaws(AliRawReader* rawReader)
+{
+ //Raw QA info not yet implemented for EMCAL
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeRecPoints(TTree * clustersTree)
+{
+ // makes data from RecPoints
+ TBranch *emcbranch = clustersTree->GetBranch("EMCALECARP");
+ if (!emcbranch) {
+ AliError("can't get the branch with the EMCAL clusters !");
+ return;
+ }
+ TObjArray * emcrecpoints = new TObjArray(100) ;
+ emcbranch->SetAddress(&emcrecpoints);
+ emcbranch->GetEntry(0);
+
+ GetRecPointsData(1)->Fill(emcrecpoints->GetEntriesFast()) ;
+ TIter next(emcrecpoints) ;
+ AliEMCALRecPoint * rp ;
+ while ( (rp = dynamic_cast<AliEMCALRecPoint *>(next())) ) {
+ GetRecPointsData(0)->Fill( rp->GetEnergy()) ;
+ }
+ emcrecpoints->Delete();
+ delete emcrecpoints;
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeSDigits(TClonesArray * sdigits)
+{
+ // makes data from SDigits
+
+ GetSDigitsData(1)->Fill(sdigits->GetEntriesFast()) ;
+ TIter next(sdigits) ;
+ AliEMCALDigit * sdigit ;
+ while ( (sdigit = dynamic_cast<AliEMCALDigit *>(next())) ) {
+ GetSDigitsData(0)->Fill( sdigit->GetAmp()) ;
+ }
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::MakeSDigits(TTree * sdigitTree)
+{
+ // makes data from SDigit Tree
+ TClonesArray * sdigits = new TClonesArray("AliEMCALDigit", 1000) ;
+
+ TBranch * branch = sdigitTree->GetBranch("EMCAL") ;
+ if ( ! branch ) {
+ AliWarning("EMCAL branch in SDigit Tree not found") ;
+ } else {
+ branch->SetAddress(&sdigits) ;
+ branch->GetEntry(0) ;
+ MakeSDigits(sdigits) ;
+ }
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMaker::StartOfDetectorCycle()
+{
+ //Detector specific actions at start of cycle
+
+}
--- /dev/null
+#ifndef ALIEMCALQADATAMAKER_H
+#define ALIEMCALQADATAMAKER_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+
+/*
+ Produces the data needed to calculate the quality assurance.
+ All data must be mergeable objects.
+
+ Based on PHOS code written by
+ Y. Schutz CERN July 2007
+*/
+
+
+// --- ROOT system ---
+class TH1F ;
+class TH1I ;
+class TObjArray ;
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliQADataMaker.h"
+
+class AliEMCALQADataMaker: public AliQADataMaker {
+
+public:
+ AliEMCALQADataMaker() ; // ctor
+ AliEMCALQADataMaker(const AliEMCALQADataMaker& qadm) ;
+ AliEMCALQADataMaker& operator = (const AliEMCALQADataMaker& qadm) ;
+ virtual ~AliEMCALQADataMaker() {;} // dtor
+
+private:
+ virtual void EndOfDetectorCycle(AliQA::TASKINDEX, TObjArray * list) ;
+ virtual void InitHits() ;
+ virtual void InitESDs() ;
+ virtual void InitDigits() ;
+ virtual void InitRecPoints() ;
+ virtual void InitRaws() ;
+ virtual void InitSDigits() ;
+ virtual void MakeESDs(AliESDEvent * esd) ;
+ virtual void MakeHits(TClonesArray * hits) ;
+ virtual void MakeHits(TTree * hitTree) ;
+ virtual void MakeDigits(TClonesArray * digits) ;
+ virtual void MakeDigits(TTree * digitTree) ;
+ virtual void MakeRecPoints(TTree * recpoTree) ;
+ virtual void MakeRaws(AliRawReader* rawReader) ;
+ virtual void MakeSDigits(TClonesArray * sigits) ;
+ virtual void MakeSDigits(TTree * sigitTree) ;
+ virtual void StartOfDetectorCycle() ;
+
+ ClassDef(AliEMCALQADataMaker,1) // description
+
+};
+
+#endif // AliEMCALQADataMaker_H
--- /dev/null
+/**************************************************************************
+ * 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. *
+ **************************************************************************/
+/*
+Based on the QA code for PHOS written by Yves Schutz July 2007
+
+Authors: J.Klay (Cal Poly) May 2008
+ S. Salur LBL April 2008
+
+*/
+
+// --- ROOT system ---
+#include <TClonesArray.h>
+#include <TFile.h>
+#include <TH1F.h>
+#include <TH1I.h>
+#include <TH2F.h>
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliESDCaloCluster.h"
+#include "AliESDEvent.h"
+#include "AliLog.h"
+#include "AliEMCALQADataMakerRec.h"
+#include "AliQAChecker.h"
+#include "AliEMCALRecPoint.h"
+#include "AliEMCALRawUtils.h"
+#include "AliEMCALReconstructor.h"
+#include "AliEMCALRecParam.h"
+
+ClassImp(AliEMCALQADataMakerRec)
+
+//____________________________________________________________________________
+ AliEMCALQADataMakerRec::AliEMCALQADataMakerRec() :
+ AliQADataMakerRec(AliQA::GetDetName(AliQA::kEMCAL), "EMCAL Quality Assurance Data Maker")
+{
+ // ctor
+}
+
+//____________________________________________________________________________
+AliEMCALQADataMakerRec::AliEMCALQADataMakerRec(const AliEMCALQADataMakerRec& qadm) :
+ AliQADataMakerRec()
+{
+ //copy ctor
+ SetName((const char*)qadm.GetName()) ;
+ SetTitle((const char*)qadm.GetTitle());
+}
+
+//__________________________________________________________________
+AliEMCALQADataMakerRec& AliEMCALQADataMakerRec::operator = (const AliEMCALQADataMakerRec& qadm )
+{
+ // Equal operator.
+ this->~AliEMCALQADataMakerRec();
+ new(this) AliEMCALQADataMakerRec(qadm);
+ return *this;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray * list)
+{
+ //Detector specific actions at end of cycle
+ // do the QA checking
+ AliQAChecker::Instance()->Run(AliQA::kEMCAL, task, list) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::InitESDs()
+{
+ //Create histograms to controll ESD
+
+ TH1F * h1 = new TH1F("hESDEmcalSpectrum", "ESDs spectrum in EMCAL", 200, 0., 20.) ;
+ h1->Sumw2() ;
+ Add2ESDsList(h1, kESDSpec) ;
+ TH1I * h2 = new TH1I("hESDEmcalMul", "ESDs multiplicity distribution in EMCAL", 100, 0, 100) ;
+ h2->Sumw2() ;
+ Add2ESDsList(h2, kESDNtot) ;
+
+ TH1I * h3 = new TH1I("hESDEmcalEtot", "ESDs Etot in EMCAL", 100, 0, 1000.) ;
+ h3->Sumw2() ;
+ Add2ESDsList(h3, kESDEtot) ;
+
+ TH1F * h4 = new TH1F("hESDEmcalPid", "ESDs PID distribution in EMCAL", 100, 0., 1.) ;
+ h4->Sumw2() ;
+ Add2ESDsList(h4, kESDpid) ;
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::InitRecPoints()
+{
+ // create Reconstructed Points histograms in RecPoints subdir
+ TH2I * h0 = new TH2I("hRpEMCALxySMod1","RecPoints Rows x Columns for EMCAL supermodule 1", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h0,kRPsmod1) ;
+ TH2I * h1 = new TH2I("hRpEMCALxySMod2","RecPoints Rows x Columns for EMCAL supermodule 2", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h1,kRPsmod2) ;
+ TH2I * h2 = new TH2I("hRpEMCALxySMod3","RecPoints Rows x Columns for EMCAL supermodule 3", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h2,kRPsmod3) ;
+ TH2I * h3 = new TH2I("hRpEMCALxySMod4","RecPoints Rows x Columns for EMCAL supermodule 4", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h3,kRPsmod4) ;
+ TH2I * h4 = new TH2I("hRpEMCALxySMod5","RecPoints Rows x Columns for EMCAL supermodule 5", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h4,kRPsmod5) ;
+ TH2I * h5 = new TH2I("hRpEMCALxySMod6","RecPoints Rows x Columns for EMCAL supermodule 6", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h5,kRPsmod6) ;
+ TH2I * h6 = new TH2I("hRpEMCALxySMod7","RecPoints Rows x Columns for EMCAL supermodule 7", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h6,kRPsmod7) ;
+ TH2I * h7 = new TH2I("hRpEMCALxySMod8","RecPoints Rows x Columns for EMCAL supermodule 8", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h7,kRPsmod8) ;
+ TH2I * h8 = new TH2I("hRpEMCALxySMod9","RecPoints Rows x Columns for EMCAL supermodule 9", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h8,kRPsmod9) ;
+ TH2I * h9 = new TH2I("hRpEMCALxySMod10","RecPoints Rows x Columns for EMCAL supermodule 10", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h9,kRPsmod10) ;
+ TH2I * h10 = new TH2I("hRpEMCALxySMod11","RecPoints Rows x Columns for EMCAL supermodule 11", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h10,kRPsmod11) ;
+ TH2I * h11 = new TH2I("hRpEMCALxySMod12","RecPoints Rows x Columns for EMCAL supermodule 12", 64, -72., 72., 56, -63., 63.) ;
+ Add2RecPointsList(h11,kRPsmod12) ;
+
+ TH1F * h12 = new TH1F("hEmcalRecPointsSpectrum", "RecPoints spectrum in EMCAL", 2000, 0., 20.) ;
+ h12->Sumw2() ;
+ Add2RecPointsList(h12, kRPSpec) ;
+
+ TH1I * h13 = new TH1I("hEmcalRecPointsMul", "RecPoints multiplicity distribution in EMCAL", 100, 0, 100) ;
+ h13->Sumw2() ;
+ Add2RecPointsList(h13, kRPNtot) ;
+
+ TH1I * h14 = new TH1I("hEmcalRecPointsEtot", "RecPoints Etot in EMCAL", 200, 0, 200.) ;
+ h14->Sumw2() ;
+ Add2RecPointsList(h14, kRPEtot) ;
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::InitRaws()
+{
+ // create Raws histograms in Raws subdir
+ TH2I * h0 = new TH2I("hHighEMCALxySMod1","High Gain Rows x Columns for EMCAL supermodule 1", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h0,kHGsmod1) ;
+ TH2I * h1 = new TH2I("hHighEMCALxySMod2","High Gain Rows x Columns for EMCAL supermodule 2", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h1,kHGsmod2) ;
+ TH2I * h2 = new TH2I("hHighEMCALxySMod3","High Gain Rows x Columns for EMCAL supermodule 3", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h2,kHGsmod3) ;
+ TH2I * h3 = new TH2I("hHighEMCALxySMod4","High Gain Rows x Columns for EMCAL supermodule 4", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h3,kHGsmod4) ;
+ TH2I * h4 = new TH2I("hHighEMCALxySMod5","High Gain Rows x Columns for EMCAL supermodule 5", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h4,kHGsmod5) ;
+ TH2I * h5 = new TH2I("hHighEMCALxySMod6","High Gain Rows x Columns for EMCAL supermodule 6", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h5,kHGsmod6) ;
+ TH2I * h6 = new TH2I("hHighEMCALxySMod7","High Gain Rows x Columns for EMCAL supermodule 7", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h6,kHGsmod7) ;
+ TH2I * h7 = new TH2I("hHighEMCALxySMod8","High Gain Rows x Columns for EMCAL supermodule 8", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h7,kHGsmod8) ;
+ TH2I * h8 = new TH2I("hHighEMCALxySMod9","High Gain Rows x Columns for EMCAL supermodule 9", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h8,kHGsmod9) ;
+ TH2I * h9 = new TH2I("hHighEMCALxySMod10","High Gain Rows x Columns for EMCAL supermodule 10", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h9,kHGsmod10) ;
+ TH2I * h10 = new TH2I("hHighEMCALxySMod11","High Gain Rows x Columns for EMCAL supermodule 11", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h10,kHGsmod11) ;
+ TH2I * h11 = new TH2I("hHighEMCALxySMod12","High Gain Rows x Columns for EMCAL supermodule 12", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h11,kHGsmod12) ;
+
+
+ TH2I * h12 = new TH2I("hLowEMCALxySMod1","Low Gain Rows x Columns for EMCAL supermodule 1", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h12,kLGsmod1) ;
+ TH2I * h13 = new TH2I("hLowEMCALxySMod2","Low Gain Rows x Columns for EMCAL supermodule 2", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h13,kLGsmod2) ;
+ TH2I * h14 = new TH2I("hLowEMCALxySMod3","Low Gain Rows x Columns for EMCAL supermodule 3", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h14,kLGsmod3) ;
+ TH2I * h15 = new TH2I("hLowEMCALxySMod4","Low Gain Rows x Columns for EMCAL supermodule 4", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h15,kLGsmod4) ;
+ TH2I * h16 = new TH2I("hLowEMCALxySMod5","Low Gain Rows x Columns for EMCAL supermodule 5", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h16,kLGsmod5) ;
+ TH2I * h17 = new TH2I("hLowEMCALxySMod6","Low Gain Rows x Columns for EMCAL supermodule 6", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h17,kLGsmod6) ;
+ TH2I * h18 = new TH2I("hLowEMCALxySMod7","Low Gain Rows x Columns for EMCAL supermodule 7", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h18,kLGsmod7) ;
+ TH2I * h19 = new TH2I("hLowEMCALxySMod8","Low Gain Rows x Columns for EMCAL supermodule 8", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h19,kLGsmod8) ;
+ TH2I * h20 = new TH2I("hLowEMCALxySMod9","Low Gain Rows x Columns for EMCAL supermodule 9", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h20,kLGsmod9) ;
+ TH2I * h21 = new TH2I("hLowEMCALxySMod10","Low Gain Rows x Columns for EMCAL supermodule 10", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h21,kLGsmod10) ;
+ TH2I * h22 = new TH2I("hLowEMCALxySMod11","Low Gain Rows x Columns for EMCAL supermodule 11", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h22,kLGsmod11) ;
+ TH2I * h23 = new TH2I("hLowEMCALxySMod12","Low Gain Rows x Columns for EMCAL supermodule 12", 64, 0, 64, 56, 0, 56) ;
+ Add2RawsList(h23,kLGsmod12) ;
+
+
+ TH1I * h24 = new TH1I("hLowEmcalSupermodules", "Low Gain Hits in EMCAL supermodules", 12, 0, 12) ;
+ h24->Sumw2() ;
+ Add2RawsList(h24, kNsmodLG) ;
+ TH1I * h25 = new TH1I("hHighEmcalSupermodules", "High Gain Hits in EMCAL supermodules", 12, 0, 12) ;
+ h25->Sumw2() ;
+ Add2RawsList(h25, kNsmodHG) ;
+
+ TH1F * h26 = new TH1F("hLowEmcalRawtime", "Low Gain Time of raw hits in EMCAL", 500, -50., 200.) ;
+ h26->Sumw2() ;
+ Add2RawsList(h26, kLGtime) ;
+ TH1F * h27 = new TH1F("hHighEmcalRawtime", "High Gain Time of raw hits in EMCAL", 500, -50., 200.) ;
+ h27->Sumw2() ;
+ Add2RawsList(h27, kHGtime) ;
+
+ TH1F * h28 = new TH1F("hLowEmcalRawEnergy", "Low Gain Energy of raw hits in EMCAL", 500, 0., 1000.) ;
+ h28->Sumw2() ;
+ Add2RawsList(h28, kSpecLG) ;
+ TH1F * h29 = new TH1F("hHighEmcalRawEnergy", "High Gain Energy of raw hits in EMCAL",500,0., 1000.) ;
+ h29->Sumw2() ;
+ Add2RawsList(h29, kSpecHG) ;
+
+ TH1F * h30 = new TH1F("hLowNtot", "Low Gain Total Number of raw hits in EMCAL", 500, 0., 5000.) ;
+ h30->Sumw2() ;
+ Add2RawsList(h30, kNtotLG) ;
+ TH1F * h31 = new TH1F("hHighNtot", "High Gain Total Number of raw hits in EMCAL",500,0., 5000.) ;
+ h31->Sumw2() ;
+ Add2RawsList(h31, kNtotHG) ;
+
+ TH1F * h32 = new TH1F("hLowEtot", "Low Gain Total Energy of raw hits in EMCAL", 500, 0., 5000.) ;
+ h32->Sumw2() ;
+ Add2RawsList(h32, kEtotLG) ;
+ TH1F * h33 = new TH1F("hHighEtot", "High Gain Total Energy of raw hits in EMCAL",500,0., 100000.) ;
+ h33->Sumw2() ;
+ Add2RawsList(h33, kEtotHG) ;
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::MakeESDs(AliESDEvent * esd)
+{
+ // make QA data from ESDs
+
+ Int_t nTot = 0 ;
+ Double_t eTot = 0 ;
+ for ( Int_t index = 0; index < esd->GetNumberOfCaloClusters() ; index++ ) {
+ AliESDCaloCluster * clu = esd->GetCaloCluster(index) ;
+ if( clu->IsEMCAL() ) {
+ GetESDsData(kESDSpec)->Fill(clu->E()) ;
+ Double_t *pid=clu->GetPid() ;
+ GetESDsData(kESDpid)->Fill(pid[AliPID::kPhoton]) ;
+ eTot+=clu->E() ;
+ nTot++ ;
+ }
+ }
+ GetESDsData(kESDNtot)->Fill(nTot) ;
+ GetESDsData(kESDEtot)->Fill(eTot) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::MakeRaws(AliRawReader* rawReader)
+{
+ //Fill prepared histograms with Raw digit properties
+
+ //Raw histogram filling not yet implemented
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::MakeRecPoints(TTree * clustersTree)
+{
+ // makes data from RecPoints
+ TBranch *emcbranch = clustersTree->GetBranch("EMCALECARP");
+ if (!emcbranch) {
+ AliError("can't get the branch with the EMCAL clusters !");
+ return;
+ }
+ TObjArray * emcrecpoints = new TObjArray(100) ;
+ emcbranch->SetAddress(&emcrecpoints);
+ emcbranch->GetEntry(0);
+
+ GetRecPointsData(kRPNtot)->Fill(emcrecpoints->GetEntriesFast()) ;
+ TIter next(emcrecpoints) ;
+ AliEMCALRecPoint * rp ;
+ Double_t eTot = 0. ;
+ while ( (rp = dynamic_cast<AliEMCALRecPoint *>(next())) ) {
+ GetRecPointsData(kRPSpec)->Fill( rp->GetEnergy()) ;
+ Int_t smod = rp->GetSuperModuleNumber() ;
+ TVector3 pos ;
+ rp->GetLocalPosition(pos) ;
+ switch(smod){
+ case 0: GetRecPointsData(kRPsmod1)->Fill(pos.X(),pos.Z()) ; break ;
+ case 1: GetRecPointsData(kRPsmod2)->Fill(pos.X(),pos.Z()) ; break ;
+ case 2: GetRecPointsData(kRPsmod3)->Fill(pos.X(),pos.Z()) ; break ;
+ case 3: GetRecPointsData(kRPsmod4)->Fill(pos.X(),pos.Z()) ; break ;
+ case 4: GetRecPointsData(kRPsmod5)->Fill(pos.X(),pos.Z()) ; break ;
+ case 5: GetRecPointsData(kRPsmod6)->Fill(pos.X(),pos.Z()) ; break ;
+ case 6: GetRecPointsData(kRPsmod7)->Fill(pos.X(),pos.Z()) ; break ;
+ case 7: GetRecPointsData(kRPsmod8)->Fill(pos.X(),pos.Z()) ; break ;
+ case 8: GetRecPointsData(kRPsmod9)->Fill(pos.X(),pos.Z()) ; break ;
+ case 9: GetRecPointsData(kRPsmod10)->Fill(pos.X(),pos.Z()) ; break ;
+ case 10: GetRecPointsData(kRPsmod11)->Fill(pos.X(),pos.Z()) ; break ;
+ case 11: GetRecPointsData(kRPsmod12)->Fill(pos.X(),pos.Z()) ; break ;
+ }
+
+ eTot+= rp->GetEnergy() ;
+ }
+ GetRecPointsData(kRPEtot)->Fill(eTot) ;
+ emcrecpoints->Delete();
+ delete emcrecpoints;
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerRec::StartOfDetectorCycle()
+{
+ //Detector specific actions at start of cycle
+
+}
--- /dev/null
+#ifndef ALIEMCALQADataMakerRec_H
+#define ALIEMCALQADataMakerRec_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/*
+ Produces the data needed to calculate the quality assurance.
+ All data must be mergeable objects.
+
+ Based on PHOS code written by
+ Y. Schutz CERN July 2007
+*/
+
+
+// --- ROOT system ---
+class TH1F ;
+class TH1I ;
+class TObjArray ;
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliQADataMakerRec.h"
+
+class AliEMCALQADataMakerRec: public AliQADataMakerRec {
+
+public:
+ //Histograms for Raw data control
+ enum HRawType_t {kHGsmod1,kHGsmod2,kHGsmod3,kHGsmod4,kHGsmod5,kHGsmod6,
+ kHGsmod7,kHGsmod8,kHGsmod9,kHGsmod10,kHGsmod11,kHGsmod12,
+ kLGsmod1,kLGsmod2,kLGsmod3,kLGsmod4,kLGsmod5,kLGsmod6,
+ kLGsmod7,kLGsmod8,kLGsmod9,kLGsmod10,kLGsmod11,kLGsmod12,
+ kNsmodLG,kNsmodHG,
+ kNtotLG,kNtotHG,kEtotLG,kEtotHG,
+ kLGtime,kHGtime,kSpecLG,kSpecHG} ;
+ //Histograms for RecPoints control
+ enum HRPType_t {kRPsmod1,kRPsmod2,kRPsmod3,kRPsmod4,kRPsmod5,kRPsmod6,
+ kRPsmod7,kRPsmod8,kRPsmod9,kRPsmod10,kRPsmod11,kRPsmod12,
+ kRPNtot,kRPEtot,kRPSpec,kRPTime} ;
+ //Histograms for ESDs control
+ enum HESDType_t {kESDNtot,kESDEtot,kESDSpec,kESDpid} ;
+
+
+public:
+ AliEMCALQADataMakerRec() ; // ctor
+ AliEMCALQADataMakerRec(const AliEMCALQADataMakerRec& qadm) ;
+ AliEMCALQADataMakerRec& operator = (const AliEMCALQADataMakerRec& qadm) ;
+ virtual ~AliEMCALQADataMakerRec() {;} // dtor
+
+private:
+ virtual void EndOfDetectorCycle(AliQA::TASKINDEX_t, TObjArray * list) ;
+ virtual void InitESDs() ;
+ virtual void InitRecPoints() ;
+ virtual void InitRaws() ;
+ virtual void MakeESDs(AliESDEvent * esd) ;
+ virtual void MakeRecPoints(TTree * recpoTree) ;
+ virtual void MakeRaws(AliRawReader* rawReader) ;
+ virtual void StartOfDetectorCycle() ;
+
+ ClassDef(AliEMCALQADataMakerRec,1) // description
+
+};
+
+#endif // AliEMCALQADataMakerRec_H
--- /dev/null
+/**************************************************************************
+ * 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. *
+ **************************************************************************/
+
+/*
+ Produces the data needed to calculate the quality assurance.
+ All data must be mergeable objects.
+
+ Based on PHOS code written by
+ Y. Schutz CERN July 2007
+*/
+
+// --- ROOT system ---
+#include <TClonesArray.h>
+#include <TFile.h>
+#include <TH1F.h>
+#include <TH1I.h>
+#include <TH2F.h>
+#include <TTree.h>
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliESDCaloCluster.h"
+#include "AliLog.h"
+#include "AliEMCALDigit.h"
+#include "AliEMCALHit.h"
+#include "AliEMCALQADataMakerSim.h"
+#include "AliQAChecker.h"
+
+ClassImp(AliEMCALQADataMakerSim)
+
+//____________________________________________________________________________
+ AliEMCALQADataMakerSim::AliEMCALQADataMakerSim() :
+ AliQADataMakerSim(AliQA::GetDetName(AliQA::kEMCAL), "EMCAL Quality Assurance Data Maker")
+{
+ // ctor
+}
+
+//____________________________________________________________________________
+AliEMCALQADataMakerSim::AliEMCALQADataMakerSim(const AliEMCALQADataMakerSim& qadm) :
+ AliQADataMakerSim()
+{
+ //copy ctor
+ SetName((const char*)qadm.GetName()) ;
+ SetTitle((const char*)qadm.GetTitle());
+}
+
+//__________________________________________________________________
+AliEMCALQADataMakerSim& AliEMCALQADataMakerSim::operator = (const AliEMCALQADataMakerSim& qadm )
+{
+ // Assign operator.
+ this->~AliEMCALQADataMakerSim();
+ new(this) AliEMCALQADataMakerSim(qadm);
+ return *this;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray * list)
+{
+ //Detector specific actions at end of cycle
+ // do the QA checking
+ AliQAChecker::Instance()->Run(AliQA::kEMCAL, task, list) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::InitHits()
+{
+ // create Hits histograms in Hits subdir
+ TH1F * h0 = new TH1F("hEmcalHits", "Hits energy distribution in EMCAL", 100, 0., 100.) ;
+ h0->Sumw2() ;
+ Add2HitsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalHitsMul", "Hits multiplicity distribution in EMCAL", 500, 0., 10000) ;
+ h1->Sumw2() ;
+ Add2HitsList(h1, 1) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::InitDigits()
+{
+ // create Digits histograms in Digits subdir
+ TH1I * h0 = new TH1I("hEmcalDigits", "Digits amplitude distribution in EMCAL", 500, 0, 5000) ;
+ h0->Sumw2() ;
+ Add2DigitsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalDigitsMul", "Digits multiplicity distribution in EMCAL", 500, 0, 1000) ;
+ h1->Sumw2() ;
+ Add2DigitsList(h1, 1) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::InitSDigits()
+{
+ // create SDigits histograms in SDigits subdir
+ TH1F * h0 = new TH1F("hEmcalSDigits", "SDigits energy distribution in EMCAL", 100, 0., 100.) ;
+ h0->Sumw2() ;
+ Add2SDigitsList(h0, 0) ;
+ TH1I * h1 = new TH1I("hEmcalSDigitsMul", "SDigits multiplicity distribution in EMCAL", 500, 0, 10000) ;
+ h1->Sumw2() ;
+ Add2SDigitsList(h1, 1) ;
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::MakeHits(TClonesArray * hits)
+{
+ //make QA data from Hits
+
+ GetHitsData(1)->Fill(hits->GetEntriesFast()) ;
+ TIter next(hits) ;
+ AliEMCALHit * hit ;
+ while ( (hit = dynamic_cast<AliEMCALHit *>(next())) ) {
+ GetHitsData(0)->Fill( hit->GetEnergy()) ;
+ }
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::MakeHits(TTree * hitTree)
+{
+ // make QA data from Hit Tree
+
+ TClonesArray * hits = new TClonesArray("AliEMCALHit", 1000);
+
+ TBranch * branch = hitTree->GetBranch("EMCAL") ;
+ if ( ! branch ) {
+ AliWarning("EMCAL branch in Hit Tree not found") ;
+ } else {
+ TClonesArray * tmp = new TClonesArray("AliEMCALHit", 1000) ;
+ branch->SetAddress(&tmp) ;
+ Int_t index = 0 ;
+ for (Int_t ientry = 0 ; ientry < branch->GetEntries() ; ientry++) {
+ branch->GetEntry(ientry) ;
+ for (Int_t ihit = 0 ; ihit < tmp->GetEntries() ; ihit++) {
+ AliEMCALHit * hit = dynamic_cast<AliEMCALHit *> (tmp->At(ihit)) ;
+ new((*hits)[index]) AliEMCALHit(*hit) ;
+ index++ ;
+ }
+ }
+ tmp->Delete() ;
+ delete tmp ;
+ MakeHits(hits) ;
+ }
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::MakeDigits(TClonesArray * digits)
+{
+ // makes data from Digits
+
+ GetDigitsData(1)->Fill(digits->GetEntriesFast()) ;
+ TIter next(digits) ;
+ AliEMCALDigit * digit ;
+ while ( (digit = dynamic_cast<AliEMCALDigit *>(next())) ) {
+ GetDigitsData(0)->Fill( digit->GetAmp()) ;
+ }
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::MakeDigits(TTree * digitTree)
+{
+ // makes data from Digit Tree
+ TClonesArray * digits = new TClonesArray("AliEMCALDigit", 1000) ;
+
+ TBranch * branch = digitTree->GetBranch("EMCAL") ;
+ if ( ! branch ) {
+ AliWarning("EMCAL branch in Digit Tree not found") ;
+ } else {
+ branch->SetAddress(&digits) ;
+ branch->GetEntry(0) ;
+ MakeDigits(digits) ;
+ }
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::MakeSDigits(TClonesArray * sdigits)
+{
+ // makes data from SDigits
+
+ GetSDigitsData(1)->Fill(sdigits->GetEntriesFast()) ;
+ TIter next(sdigits) ;
+ AliEMCALDigit * sdigit ;
+ while ( (sdigit = dynamic_cast<AliEMCALDigit *>(next())) ) {
+ GetSDigitsData(0)->Fill( sdigit->GetAmp()) ;
+ }
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::MakeSDigits(TTree * sdigitTree)
+{
+ // makes data from SDigit Tree
+ TClonesArray * sdigits = new TClonesArray("AliEMCALDigit", 1000) ;
+
+ TBranch * branch = sdigitTree->GetBranch("EMCAL") ;
+ if ( ! branch ) {
+ AliWarning("EMCAL branch in SDigit Tree not found") ;
+ } else {
+ branch->SetAddress(&sdigits) ;
+ branch->GetEntry(0) ;
+ MakeSDigits(sdigits) ;
+ }
+
+}
+
+//____________________________________________________________________________
+void AliEMCALQADataMakerSim::StartOfDetectorCycle()
+{
+ //Detector specific actions at start of cycle
+
+}
--- /dev/null
+#ifndef ALIEMCALQADATAMAKERSIM_H
+#define ALIEMCALQADATAMAKERSIM_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/*
+ Produces the data needed to calculate the quality assurance.
+ All data must be mergeable objects.
+
+ Based on PHOS code written by
+ Y. Schutz CERN July 2007
+*/
+
+
+// --- ROOT system ---
+class TH1F ;
+class TH1I ;
+class TObjArray ;
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+#include "AliQADataMakerSim.h"
+
+class AliEMCALQADataMakerSim: public AliQADataMakerSim {
+
+public:
+ AliEMCALQADataMakerSim() ; // ctor
+ AliEMCALQADataMakerSim(const AliEMCALQADataMakerSim& qadm) ;
+ AliEMCALQADataMakerSim& operator = (const AliEMCALQADataMakerSim& qadm) ;
+ virtual ~AliEMCALQADataMakerSim() {;} // dtor
+
+private:
+ virtual void EndOfDetectorCycle(AliQA::TASKINDEX_t, TObjArray * list) ;
+ virtual void InitHits() ;
+ virtual void InitDigits() ;
+ virtual void InitSDigits() ;
+ virtual void MakeHits(TClonesArray * hits) ;
+ virtual void MakeHits(TTree * hitTree) ;
+ virtual void MakeDigits(TClonesArray * digits) ;
+ virtual void MakeDigits(TTree * digitTree) ;
+ virtual void MakeSDigits(TClonesArray * sigits) ;
+ virtual void MakeSDigits(TTree * sigitTree) ;
+ virtual void StartOfDetectorCycle() ;
+
+ ClassDef(AliEMCALQADataMakerSim,1) // description
+
+};
+
+#endif // AliEMCALQADATAMAKERSIM_H
#pragma link C++ class AliEMCALCalibHistoProducer+;
#pragma link C++ class AliEMCALPreprocessor+;
// Tables without TTable
+#pragma link C++ class AliEMCALPi0SelectionParam+;
+#pragma link C++ class AliEMCALPi0SelectionParRec+;
+#pragma link C++ class AliEMCALCalibCoefs+;
+#pragma link C++ class AliEMCALCalibCoef+;
+#pragma link C++ class AliEMCALCellInfo+;
+#pragma link C++ class AliEMCALCellIndexes+;
//
#pragma link C++ class AliCaloCalibPedestal+;
#pragma link C++ class AliEMCALSurvey+;
#pragma link C++ class AliEMCALRecParam+;
+#pragma link C++ class AliEMCALQAChecker+;
+
#endif
#pragma link C++ class AliEMCALTrack+;
#pragma link C++ class AliEMCALTracker+;
#pragma link C++ class AliEMCALPID+;
+#pragma link C++ class AliEMCALRecPointsQaESDSelector+;
+#pragma link C++ class AliEMCALQADataMakerRec+;
//
// Calibration staff
+#pragma link C++ class AliEMCALFolder;
+#pragma link C++ class AliEMCALSuperModule;
+#pragma link C++ class AliEMCALCell;
+
#endif
#pragma link C++ class AliEMCALv2+;
#pragma link C++ class AliEMCALDigitizer+;
#pragma link C++ class AliEMCALRawUtils+;
-
+#pragma link C++ class AliEMCALQADataMakerSim+;
#endif
#-*-Mode: Makefile-*-
-SRCS =\
+SRCS = \
AliEMCALGeometry.cxx \
AliEMCALHit.cxx \
AliEMCALLoader.cxx \
AliEMCALCalibData.cxx \
AliEMCALCalibHistoProducer.cxx \
AliEMCALPreprocessor.cxx \
+AliEMCALPi0SelectionParam.cxx \
+AliEMCALCalibCoefs.cxx \
+AliEMCALCellInfo.cxx \
AliCaloCalibPedestal.cxx \
AliEMCALSurvey.cxx \
-AliEMCALRecParam.cxx
+AliEMCALRecParam.cxx \
+AliEMCALQAChecker.cxx
HDRS= $(SRCS:.cxx=.h)
AliEMCALClusterizerv1.cxx \
AliEMCALTrack.cxx \
AliEMCALTracker.cxx \
-AliEMCALPID.cxx
+AliEMCALPID.cxx \
+AliEMCALRecPointsQaESDSelector.cxx \
+AliEMCALFolder.cxx \
+AliEMCALSuperModule.cxx \
+AliEMCALCell.cxx \
+AliEMCALQADataMakerRec.cxx
HDRS= $(SRCS:.cxx=.h)
-CINTHDRS:= $(HDRS) AliEMCALGeometry.h
+CINTHDRS:= $(HDRS) AliEMCALGeometry.h AliEMCALPi0SelectionParam.h
DHDR:=EMCALLinkDefrec.h
# have to tune
AliEMCALDigitizer.cxx \
AliEMCALTick.cxx \
AliEMCALRawUtils.cxx \
-AliEMCALTrigger.cxx
+AliEMCALTrigger.cxx \
+AliEMCALQADataMakerSim.cxx
HDRS= $(SRCS:.cxx=.h)