LCOV - code coverage report
Current view: top level - PHOS/PHOSrec - AliPHOSQADataMakerRec.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 4 562 0.7 %
Date: 2016-06-14 17:26:59 Functions: 3 17 17.6 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : 
      17             : /* $Id$ */
      18             : 
      19             : /*
      20             :   Produces the data needed to calculate the quality assurance. 
      21             :   All data must be mergeable objects.
      22             :   Y. Schutz CERN July 2007
      23             : */
      24             : 
      25             : // --- ROOT system ---
      26             : #include <TClonesArray.h>
      27             : #include <TFile.h> 
      28             : #include <TH1F.h> 
      29             : #include <TH1I.h> 
      30             : #include <TH2F.h> 
      31             : #include <TParameter.h>
      32             : 
      33             : // --- Standard library ---
      34             : 
      35             : // --- AliRoot header files ---
      36             : #include "AliCaloRawStreamV3.h"
      37             : #include "AliESDCaloCluster.h"
      38             : #include "AliESDEvent.h"
      39             : #include "AliLog.h"
      40             : #include "AliPHOSQADataMakerRec.h"
      41             : #include "AliPHOSDigit.h"
      42             : #include "AliPHOSCpvRecPoint.h" 
      43             : #include "AliPHOSEmcRecPoint.h" 
      44             : #include "AliPHOSRawFitterv0.h"
      45             : #include "AliPHOSRawFitterv1.h"
      46             : #include "AliPHOSRawFitterv2.h"
      47             : #include "AliPHOSReconstructor.h"
      48             : #include "AliPHOSRecParticle.h" 
      49             : #include "AliPHOSTrackSegment.h" 
      50             : #include "AliQAChecker.h"
      51             : #include "AliRawReader.h"
      52             : 
      53          20 : ClassImp(AliPHOSQADataMakerRec)
      54             :            
      55             : //____________________________________________________________________________ 
      56             :   AliPHOSQADataMakerRec::AliPHOSQADataMakerRec() : 
      57           6 :   AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kPHOS), "PHOS Quality Assurance Data Maker")
      58          10 : {
      59             :   // ctor
      60           4 : }
      61             : 
      62             : //____________________________________________________________________________ 
      63             : AliPHOSQADataMakerRec::AliPHOSQADataMakerRec(const AliPHOSQADataMakerRec& qadm) :
      64           0 :   AliQADataMakerRec()
      65           0 : {
      66             :   //copy ctor 
      67           0 :   SetName((const char*)qadm.GetName()) ; 
      68           0 :   SetTitle((const char*)qadm.GetTitle()); 
      69           0 : }
      70             : 
      71             : //__________________________________________________________________
      72             : AliPHOSQADataMakerRec& AliPHOSQADataMakerRec::operator = (const AliPHOSQADataMakerRec& qadm )
      73             : {
      74             :   // Equal operator.
      75           0 :   this->~AliPHOSQADataMakerRec();
      76           0 :   new(this) AliPHOSQADataMakerRec(qadm);
      77           0 :   return *this;
      78           0 : }
      79             :  
      80             : //____________________________________________________________________________ 
      81             : void AliPHOSQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
      82             : {
      83             :   //Detector specific actions at end of cycle
      84           0 :   ResetEventTrigClasses();
      85             : 
      86           0 :   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
      87           0 :     if (! IsValidEventSpecie(specie, list)) continue;
      88           0 :     SetEventSpecie(AliRecoParam::ConvertIndex(specie)); 
      89             :     //
      90           0 :     for (int itc=-1;itc<GetNTrigClasses();itc++) {  // RS: loop over all trigger clones
      91             :       //
      92           0 :       if(GetRawsData(kHGqualMod0,itc) && GetRawsData(kHGmod0,itc))
      93           0 :         GetRawsData(kHGqualMod0,itc)->Divide( GetRawsData(kHGmod0,itc) );
      94           0 :       if(GetRawsData(kHGqualMod1,itc) && GetRawsData(kHGmod1,itc))
      95           0 :         GetRawsData(kHGqualMod1,itc)->Divide( GetRawsData(kHGmod1,itc) );
      96           0 :       if(GetRawsData(kHGqualMod2,itc) && GetRawsData(kHGmod2,itc))
      97           0 :         GetRawsData(kHGqualMod2,itc)->Divide( GetRawsData(kHGmod2,itc) );
      98           0 :       if(GetRawsData(kHGqualMod3,itc) && GetRawsData(kHGmod3,itc))
      99           0 :         GetRawsData(kHGqualMod3,itc)->Divide( GetRawsData(kHGmod3,itc) );
     100           0 :       if(GetRawsData(kHGqualMod4,itc) && GetRawsData(kHGmod4,itc))
     101           0 :         GetRawsData(kHGqualMod4,itc)->Divide( GetRawsData(kHGmod4,itc) );
     102           0 :       if(GetRawsData(kNRCUHG,itc)) {
     103           0 :         Int_t norm = GetEvCountTotalRaws();
     104           0 :         if (norm < 1) norm = 1;
     105           0 :         TH1F* tmp = (TH1F*)GetRawsData(kNRCUHGnorm,itc);
     106           0 :         tmp->Reset();
     107           0 :         tmp->Add((TH1F*)GetRawsData(kNRCUHG,itc),1./norm);
     108           0 :       }
     109             :     } // RS: loop over all trigger clones
     110           0 :   }
     111             :   // do the QA checking
     112           0 :   AliQAChecker::Instance()->Run(AliQAv1::kPHOS, task, list) ;  
     113           0 : }
     114             : 
     115             : //____________________________________________________________________________ 
     116             : void AliPHOSQADataMakerRec::InitESDs()
     117             : {
     118             :   //Create histograms to controll ESD
     119             :  
     120             :   const Bool_t expert   = kTRUE ; 
     121             :   const Bool_t image    = kTRUE ; 
     122             : 
     123           0 :   TH1F * h1 = new TH1F("hESDPhosSpectrum",  "ESDs spectrum in PHOS; Energy [MeV];Counts"                ,  200, 0.,   20.) ;
     124           0 :   h1->Sumw2() ;
     125           0 :   Add2ESDsList(h1, kESDSpec, !expert, image)  ;
     126             : 
     127           0 :   TH1I * h2 = new TH1I("hESDPhosMul",       "ESDs multiplicity distribution in PHOS; # of clusters;Counts", 100, 0,   100 ) ; 
     128           0 :   h2->Sumw2() ;
     129           0 :   Add2ESDsList(h2, kESDNtot, !expert, image) ;
     130             :  
     131           0 :   TH1F * h3 = new TH1F("hESDPhosEtot",      "ESDs total energy;Energy [MeV];Counts"                     , 2000, 0,  200.) ; 
     132           0 :   h3->Sumw2() ;
     133           0 :   Add2ESDsList(h3, kESDEtot, !expert, image) ;  //Expert histo
     134             :  
     135           0 :   TH1F * h4 = new TH1F("hESDpid",           "ESDs PID distribution in PHOS;Particle Id;Counts"         , 100, 0.,    1.) ;
     136           0 :   h4->Sumw2() ;
     137           0 :   Add2ESDsList(h4, kESDpid, !expert, image) ; //Expert histo
     138             :   //
     139           0 :   ClonePerTrigClass(AliQAv1::kESDS); // this should be the last line    
     140           0 : }
     141             : 
     142             : //____________________________________________________________________________ 
     143             : void AliPHOSQADataMakerRec::InitDigits()
     144             : {
     145             :   // create Digits histograms in Digits subdir
     146             :   const Bool_t expert   = kTRUE ; 
     147             :   const Bool_t image    = kTRUE ; 
     148           0 :   TH1I * h0 = new TH1I("hPhosDigits",    "Digits amplitude distribution in PHOS;Amplitude [ADC counts];Counts",    500, 0, 1000) ; 
     149           0 :   h0->Sumw2() ;
     150           0 :   Add2DigitsList(h0, kDigits, !expert, image) ;
     151           0 :   TH1I * h1 = new TH1I("hPhosDigitsMul", "Digits multiplicity distribution in PHOS;# of Digits;Entries", 2000, 0, 10000) ; 
     152           0 :   h1->Sumw2() ;
     153           0 :   Add2DigitsList(h1, kDigitsMul, !expert, image) ;
     154             :   //
     155           0 :   ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
     156           0 : }
     157             : 
     158             : //____________________________________________________________________________ 
     159             : void AliPHOSQADataMakerRec::InitRecPoints()
     160             : {
     161             :   // create Reconstructed Points histograms in RecPoints subdir
     162             :   const Bool_t expert   = kTRUE ; 
     163             :   const Bool_t image    = kTRUE ; 
     164             :   
     165           0 :   TH2I * h0 = new TH2I("hRpPHOSxyMod1","RecPoints Rows x Columns for PHOS module 1;Row #;Column #", 64, -72., 72., 56, -63., 63.) ;                             
     166           0 :   Add2RecPointsList(h0,kRPmod1, expert, !image) ;
     167           0 :   TH2I * h1 = new TH2I("hRpPHOSxyMod2","RecPoints Rows x Columns for PHOS module 2;Row #;Column #", 64, -72., 72., 56, -63., 63.) ;                             
     168           0 :   Add2RecPointsList(h1,kRPmod2, expert, !image) ;
     169           0 :   TH2I * h2 = new TH2I("hRpPHOSxyMod3","RecPoints Rows x Columns for PHOS module 3;Row #;Column #", 64, -72., 72., 56, -63., 63.) ;                             
     170           0 :   Add2RecPointsList(h2,kRPmod3, expert, !image) ;
     171           0 :   TH2I * h3 = new TH2I("hRpPHOSxyMod4","RecPoints Rows x Columns for PHOS module 4;Row #;Column #", 64, -72., 72., 56, -63., 63.) ;                             
     172           0 :   Add2RecPointsList(h3,kRPmod4, expert, !image) ;
     173           0 :   TH2I * h4 = new TH2I("hRpPHOSxyMod5","RecPoints Rows x Columns for PHOS module 5;Row #;Column #", 64, -72., 72., 56, -63., 63.) ;                             
     174           0 :   Add2RecPointsList(h4,kRPmod5, expert, !image) ;
     175             :  
     176           0 :   TH1F * h5 = new TH1F("hEmcPhosRecPointsSpectrum",  "EMC RecPoints spectrum in PHOS;Energy [MeV];Counts",   2000, 0., 20.) ; 
     177           0 :   h5->Sumw2() ;
     178           0 :   Add2RecPointsList(h5, kRPSpec, !expert, image)  ;
     179             : 
     180           0 :   TH1I * h6 = new TH1I("hEmcPhosRecPointsMul", "EMC RecPoints multiplicity distribution in PHOS;# of EMC Clusters;Entries", 100, 0,  100) ; 
     181           0 :   h6->Sumw2() ;
     182           0 :   Add2RecPointsList(h6, kRPNtot, !expert, image) ;
     183             : 
     184           0 :   TH1I * h7 = new TH1I("hEmcPhosRecPointsEtot", "EMC RecPoints Etot;Energy [MeV];Counts", 200, 0,  200.) ; 
     185           0 :   h7->Sumw2() ;
     186           0 :   Add2RecPointsList(h7, kRPEtot, !expert, image) ;
     187             : 
     188           0 :   TH1I * h8 = new TH1I("hCpvPhosRecPointsMul", "CPV RecPoints multiplicity distribution in PHOS;# of CPV clusters;Counts", 100, 0,  100) ; 
     189           0 :   h8->Sumw2() ;
     190           0 :   Add2RecPointsList(h8, kRPNcpv, !expert, image) ;
     191             :   //
     192           0 :   ClonePerTrigClass(AliQAv1::kRECPOINTS); // this should be the last line
     193           0 : }
     194             : 
     195             : //____________________________________________________________________________ 
     196             : void AliPHOSQADataMakerRec::InitRaws()
     197             : {
     198             :   // create Raws histograms in Raws subdir
     199             :   const Bool_t expert   = kTRUE ; 
     200             :   const Bool_t saveCorr = kTRUE ; 
     201             :   const Bool_t image    = kTRUE ; 
     202             : 
     203           0 :   TH2I * h0 = new TH2I("hHighPHOSxyMod0","High Gain in PHOS module 0", 64, 0, 64, 56, 0, 56) ;
     204           0 :   h0->SetXTitle("x, cells"); h0->SetYTitle("z, cells");
     205           0 :   Add2RawsList(h0,kHGmod0, expert, !image, !saveCorr) ;
     206           0 :   TH2I * h1 = new TH2I("hHighPHOSxyMod1","High Gain in PHOS module 1", 64, 0, 64, 56, 0, 56) ;
     207           0 :   h1->SetXTitle("x, cells"); h1->SetYTitle("z, cells");
     208           0 :   Add2RawsList(h1,kHGmod1, expert, !image, !saveCorr) ;
     209           0 :   TH2I * h2 = new TH2I("hHighPHOSxyMod2","High Gain in PHOS module 2", 64, 0, 64, 56, 0, 56) ;
     210           0 :   h2->SetXTitle("x, cells"); h2->SetYTitle("z, cells");
     211           0 :   Add2RawsList(h2,kHGmod2, expert, !image, !saveCorr) ;
     212           0 :   TH2I * h3 = new TH2I("hHighPHOSxyMod3","High Gain in PHOS module 3", 64, 0, 64, 56, 0, 56) ;
     213           0 :   h3->SetXTitle("x, cells"); h3->SetYTitle("z, cells");
     214           0 :   Add2RawsList(h3,kHGmod3, expert, !image, !saveCorr) ;
     215           0 :   TH2I * h4 = new TH2I("hHighPHOSxyMod4","High Gain in PHOS module 4", 64, 0, 64, 56, 0, 56) ;
     216           0 :   h4->SetXTitle("x, cells"); h4->SetYTitle("z, cells");
     217           0 :   Add2RawsList(h4,kHGmod4, expert, !image, !saveCorr) ;
     218             : 
     219           0 :   TH2I * h5 = new TH2I("hLowPHOSxyMod0","Low Gain in PHOS module 0", 64, 0, 64, 56, 0, 56) ;
     220           0 :   h5->SetXTitle("x, cells"); h5->SetYTitle("z, cells");
     221           0 :   Add2RawsList(h5,kLGmod0, expert, !image, !saveCorr) ;
     222           0 :   TH2I * h6 = new TH2I("hLowPHOSxyMod1","Low Gain in PHOS module 1", 64, 0, 64, 56, 0, 56) ;
     223           0 :   h6->SetXTitle("x, cells"); h6->SetYTitle("z, cells");
     224           0 :   Add2RawsList(h6,kLGmod1, expert, !image, !saveCorr) ;
     225           0 :   TH2I * h7 = new TH2I("hLowPHOSxyMod2","Low Gain in PHOS module 2", 64, 0, 64, 56, 0, 56) ;
     226           0 :   h7->SetXTitle("x, cells"); h7->SetYTitle("z, cells");
     227           0 :   Add2RawsList(h7,kLGmod2, expert, !image, !saveCorr) ;
     228           0 :   TH2I * h8 = new TH2I("hLowPHOSxyMod3","Low Gain in PHOS module 3", 64, 0, 64, 56, 0, 56) ;
     229           0 :   h8->SetXTitle("x, cells"); h8->SetYTitle("z, cells");
     230           0 :   Add2RawsList(h8,kLGmod3, expert, !image, !saveCorr) ;
     231           0 :   TH2I * h9 = new TH2I("hLowPHOSxyMod4","Low Gain in PHOS module 4", 64, 0, 64, 56, 0, 56) ;
     232           0 :   h9->SetXTitle("x, cells"); h9->SetYTitle("z, cells");
     233           0 :   Add2RawsList(h9,kLGmod4, expert, !image, !saveCorr) ;
     234             : 
     235           0 :   TH1I * h10 = new TH1I("hLowPhosModules",    "Low Gain Hits in EMCA PHOS modules", 5, 0, 5) ;
     236           0 :   h10->SetXTitle("Module number");
     237           0 :   Add2RawsList(h10, kNmodLG, !expert, image, !saveCorr) ;
     238           0 :   TH1I * h11 = new TH1I("hHighPhosModules",   "High Gain Hits in EMCA PHOS modules",5, 0, 5) ;
     239           0 :   h11->SetXTitle("Module number");
     240           0 :   Add2RawsList(h11, kNmodHG, !expert, image, !saveCorr) ;
     241             : 
     242           0 :   TH1I * h11_RCU = new TH1I("hHighPhosRCU",   "PHOS RCU occupancy with HG channels",12, 0, 12) ;
     243           0 :   h11_RCU->SetXTitle("RCU number");
     244           0 :   Add2RawsList(h11_RCU, kNRCUHG, expert, image, !saveCorr) ;
     245           0 :   TH1F * h11_RCUnorm = new TH1F("hHighPhosRCUnorm",   "PHOS RCU normalized occupancy with HG channels",12, 0, 12) ;
     246           0 :   h11_RCUnorm->SetXTitle("RCU number");
     247           0 :   h11_RCUnorm->SetYTitle("N hits per event");
     248           0 :   h11_RCUnorm->Sumw2();
     249           0 :   h11_RCUnorm->SetMarkerStyle(20);
     250           0 :   Add2RawsList(h11_RCUnorm, kNRCUHGnorm, !expert, image, !saveCorr) ;
     251             : 
     252           0 :   TH1F * h12 = new TH1F("hLowPhosRawtime" , "Low Gain Time of raw hits in PHOS" , 500, -50., 200.) ;
     253           0 :   h12->SetXTitle("Time [samples]");
     254           0 :   h12->Sumw2() ;
     255           0 :   Add2RawsList(h12, kLGtime, expert, !image, !saveCorr) ;
     256           0 :   TH1F * h13 = new TH1F("hHighPhosRawtime", "High Gain Time of raw hits in PHOS", 500, -50., 200.) ;
     257           0 :   h13->SetXTitle("Time [samples]");
     258           0 :   h13->Sumw2() ;
     259           0 :   Add2RawsList(h13, kHGtime, expert, !image, !saveCorr) ;
     260             : 
     261           0 :   TH1F * h14 = new TH1F("hLowPhosRawEnergy" , "Low Gain Energy of raw hits in PHOS" , 512, 0., 1024.) ;
     262           0 :   h14->SetXTitle("Energy [ADC counts]");
     263           0 :   h14->Sumw2() ;
     264           0 :   Add2RawsList(h14, kSpecLG, !expert, image, !saveCorr) ;
     265           0 :   TH1F * h15 = new TH1F("hHighPhosRawEnergy", "High Gain Energy of raw hits in PHOS", 512, 0., 1024.) ;
     266           0 :   h15->SetXTitle("Energy [ADC counts]");
     267           0 :   h15->Sumw2() ;
     268           0 :   Add2RawsList(h15, kSpecHG, !expert, image, !saveCorr) ;
     269             : 
     270           0 :   TH1F * h16 = new TH1F("hLowNtot" , "Low Gain Total Number of raw hits in PHOS" , 500, 0., 5000.) ;
     271           0 :   h16->SetXTitle("Number of hits");
     272           0 :   h16->Sumw2() ;
     273           0 :   Add2RawsList(h16, kNtotLG, !expert, image, saveCorr) ;
     274           0 :   TH1F * h17 = new TH1F("hHighNtot", "High Gain Total Number of raw hits in PHOS", 500, 0., 5000.) ;
     275           0 :   h17->SetXTitle("Number of hits");
     276           0 :   h17->Sumw2() ;
     277           0 :   Add2RawsList(h17, kNtotHG, !expert, image, saveCorr) ;
     278             : 
     279           0 :   TH1F * h17_1_0 = new TH1F("hHighNtot_1_0", "High Gain Total Number of raw hits in module 1 RCU0", 500, 0., 1000.) ;
     280           0 :   h17_1_0->SetXTitle("Number of hits");
     281           0 :   h17_1_0->Sumw2() ;
     282           0 :   Add2RawsList(h17_1_0, kNtotHG_1_0, expert, image, saveCorr) ;
     283             : 
     284           0 :   TH1F * h17_1_1 = new TH1F("hHighNtot_1_1", "High Gain Total Number of raw hits in module 1 RCU1", 500, 0., 1000.) ;
     285           0 :   h17_1_1->SetXTitle("Number of hits");
     286           0 :   h17_1_1->Sumw2() ;
     287           0 :   Add2RawsList(h17_1_1, kNtotHG_1_1, expert, image, saveCorr) ;
     288             : 
     289           0 :   TH1F * h17_1_2 = new TH1F("hHighNtot_1_2", "High Gain Total Number of raw hits in module 1 RCU2", 500, 0., 1000.) ;
     290           0 :   h17_1_2->SetXTitle("Number of hits");
     291           0 :   h17_1_2->Sumw2() ;
     292           0 :   Add2RawsList(h17_1_2, kNtotHG_1_2, expert, image, saveCorr) ;
     293             : 
     294           0 :   TH1F * h17_1_3 = new TH1F("hHighNtot_1_3", "High Gain Total Number of raw hits in module 1 RCU3", 500, 0., 1000.) ;
     295           0 :   h17_1_3->SetXTitle("Number of hits");
     296           0 :   h17_1_3->Sumw2() ;
     297           0 :   Add2RawsList(h17_1_3, kNtotHG_1_3, expert, image, saveCorr) ;
     298             : 
     299           0 :   TH1F * h17_2_0 = new TH1F("hHighNtot_2_0", "High Gain Total Number of raw hits in module 2 RCU0", 500, 0., 1000.) ;
     300           0 :   h17_2_0->SetXTitle("Number of hits");
     301           0 :   h17_2_0->Sumw2() ;
     302           0 :   Add2RawsList(h17_2_0, kNtotHG_2_0, expert, image, saveCorr) ;
     303             : 
     304           0 :   TH1F * h17_2_1 = new TH1F("hHighNtot_2_1", "High Gain Total Number of raw hits in module 2 RCU1", 500, 0., 1000.) ;
     305           0 :   h17_2_1->SetXTitle("Number of hits");
     306           0 :   h17_2_1->Sumw2() ;
     307           0 :   Add2RawsList(h17_2_1, kNtotHG_2_1, expert, image, saveCorr) ;
     308             : 
     309           0 :   TH1F * h17_2_2 = new TH1F("hHighNtot_2_2", "High Gain Total Number of raw hits in module 2 RCU2", 500, 0., 1000.) ;
     310           0 :   h17_2_2->SetXTitle("Number of hits");
     311           0 :   h17_2_2->Sumw2() ;
     312           0 :   Add2RawsList(h17_2_2, kNtotHG_2_2, expert, image, saveCorr) ;
     313             : 
     314           0 :   TH1F * h17_2_3 = new TH1F("hHighNtot_2_3", "High Gain Total Number of raw hits in module 2 RCU3", 500, 0., 1000.) ;
     315           0 :   h17_2_3->SetXTitle("Number of hits");
     316           0 :   h17_2_3->Sumw2() ;
     317           0 :   Add2RawsList(h17_2_3, kNtotHG_2_3, expert, image, saveCorr) ;
     318             : 
     319           0 :   TH1F * h17_3_0 = new TH1F("hHighNtot_3_0", "High Gain Total Number of raw hits in module 3 RCU0", 500, 0., 1000.) ;
     320           0 :   h17_3_0->SetXTitle("Number of hits");
     321           0 :   h17_3_0->Sumw2() ;
     322           0 :   Add2RawsList(h17_3_0, kNtotHG_3_0, expert, image, saveCorr) ;
     323             : 
     324           0 :   TH1F * h17_3_1 = new TH1F("hHighNtot_3_1", "High Gain Total Number of raw hits in module 3 RCU1", 500, 0., 1000.) ;
     325           0 :   h17_3_1->SetXTitle("Number of hits");
     326           0 :   h17_3_1->Sumw2() ;
     327           0 :   Add2RawsList(h17_3_1, kNtotHG_3_1, expert, image, saveCorr) ;
     328             : 
     329           0 :   TH1F * h17_3_2 = new TH1F("hHighNtot_3_2", "High Gain Total Number of raw hits in module 3 RCU2", 500, 0., 1000.) ;
     330           0 :   h17_3_2->SetXTitle("Number of hits");
     331           0 :   h17_3_2->Sumw2() ;
     332           0 :   Add2RawsList(h17_3_2, kNtotHG_3_2, expert, image, saveCorr) ;
     333             : 
     334           0 :   TH1F * h17_3_3 = new TH1F("hHighNtot_3_3", "High Gain Total Number of raw hits in module 3 RCU3", 500, 0., 1000.) ;
     335           0 :   h17_3_3->SetXTitle("Number of hits");
     336           0 :   h17_3_3->Sumw2() ;
     337           0 :   Add2RawsList(h17_3_3, kNtotHG_3_3, expert, image, saveCorr) ;
     338             : 
     339           0 :   TH1F * h18 = new TH1F("hLowEtot" , "Low Gain Total Energy of raw hits in PHOS" , 500, 0., 100000.) ;
     340           0 :   h18->SetXTitle("Energy [ADC counts]");
     341           0 :   h18->Sumw2() ;
     342           0 :   Add2RawsList(h18, kEtotLG, !expert, image, saveCorr) ;
     343           0 :   TH1F * h19 = new TH1F("hHighEtot", "High Gain Total Energy of raw hits in PHOS", 500, 0., 100000.) ;
     344           0 :   h19->SetXTitle("Energy [ADC counts]");
     345           0 :   h19->Sumw2() ;
     346           0 :   Add2RawsList(h19, kEtotHG, !expert, image, saveCorr) ;
     347             : 
     348           0 :   TH2F * h20 = new TH2F("hQualHGxyMod0","High Gain signal quality in module 0", 64, 0, 64, 56, 0, 56) ;
     349           0 :   h20->SetXTitle("x, cells"); h20->SetYTitle("z, cells");
     350           0 :   Add2RawsList(h20,kHGqualMod0, expert, !image, !saveCorr) ;
     351           0 :   TH2F * h21 = new TH2F("hQualHGxyMod1","High Gain signal quality in module 1", 64, 0, 64, 56, 0, 56) ;
     352           0 :   h21->SetXTitle("x, cells"); h21->SetYTitle("z, cells");
     353           0 :   Add2RawsList(h21,kHGqualMod1, expert, !image, !saveCorr) ;
     354           0 :   TH2F * h22 = new TH2F("hQualHGxyMod2","High Gain signal quality in module 2", 64, 0, 64, 56, 0, 56) ;
     355           0 :   h22->SetXTitle("x, cells"); h22->SetYTitle("z, cells");
     356           0 :   Add2RawsList(h22,kHGqualMod2, expert, !image, !saveCorr) ;
     357           0 :   TH2F * h23 = new TH2F("hQualHGxyMod3","High Gain signal quality in module 3", 64, 0, 64, 56, 0, 56) ;
     358           0 :   h23->SetXTitle("x, cells"); h23->SetYTitle("z, cells");
     359           0 :   Add2RawsList(h23,kHGqualMod3, expert, !image, !saveCorr) ;
     360           0 :   TH2F * h24 = new TH2F("hQualHGxyMod4","High Gain signal quality in module 4", 64, 0, 64, 56, 0, 56) ;
     361           0 :   h24->SetXTitle("x, cells"); h24->SetYTitle("z, cells");
     362           0 :   Add2RawsList(h24,kHGqualMod4, expert, !image, !saveCorr) ;
     363             : 
     364           0 :   TH2F * h25 = new TH2F("hQualLGxyMod0","Low Gain signal quality in module 0", 64, 0, 64, 56, 0, 56) ;
     365           0 :   h25->SetXTitle("x, cells"); h25->SetYTitle("z, cells");
     366           0 :   Add2RawsList(h25,kLGqualMod0, expert, !image, !saveCorr) ;
     367           0 :   TH2F * h26 = new TH2F("hQualLGxyMod1","Low Gain signal quality in module 1", 64, 0, 64, 56, 0, 56) ;
     368           0 :   h26->SetXTitle("x, cells"); h26->SetYTitle("z, cells");
     369           0 :   Add2RawsList(h26,kLGqualMod1, expert, !image, !saveCorr) ;
     370           0 :   TH2F * h27 = new TH2F("hQualLGxyMod2","Low Gain signal quality in module 2", 64, 0, 64, 56, 0, 56) ;
     371           0 :   h27->SetXTitle("x, cells"); h27->SetYTitle("z, cells");
     372           0 :   Add2RawsList(h27,kLGqualMod2, expert, !image, !saveCorr) ;
     373           0 :   TH2F * h28 = new TH2F("hQualLGxyMod3","Low Gain signal quality in module 3", 64, 0, 64, 56, 0, 56) ;
     374           0 :   h28->SetXTitle("x, cells"); h28->SetYTitle("z, cells");
     375           0 :   Add2RawsList(h28,kLGqualMod3, expert, !image, !saveCorr) ;
     376           0 :   TH2F * h29 = new TH2F("hQualLGxyMod4","Low Gain signal quality in module 4", 64, 0, 64, 56, 0, 56) ;
     377           0 :   h29->SetXTitle("x, cells"); h29->SetYTitle("z, cells");
     378           0 :   Add2RawsList(h29,kLGqualMod4, expert, !image, !saveCorr) ;
     379             : 
     380           0 :   TH1F * h30 = new TH1F("hLGpedRMS" ,"Low Gain pedestal RMS" ,200,0.,20.) ;
     381           0 :   h30->SetXTitle("RMS [ADC counts]");
     382           0 :   h30->Sumw2() ;
     383           0 :   Add2RawsList(h30,kLGpedRMS, expert, !image, !saveCorr) ;
     384           0 :   TH1F * h31 = new TH1F("hHGpedRMS" ,"High Gain pedestal RMS",200,0.,20.) ;
     385           0 :   h31->SetXTitle("RMS [ADC counts]");
     386           0 :   h31->Sumw2() ;
     387           0 :   Add2RawsList(h31,kHGpedRMS, expert, !image, !saveCorr) ;
     388             : 
     389           0 :   TH2F * h32 = new TH2F("hpedRMSHGxyMod0","High Gain pedestal RMS in module 0", 64, 0, 64, 56, 0, 56) ;
     390           0 :   h32->SetXTitle("x, cells"); h32->SetYTitle("z, cells");
     391           0 :   Add2RawsList(h32,kHGpedRMSMod0, expert, !image, !saveCorr) ;
     392           0 :   TH2F * h33 = new TH2F("hpedRMSHGxyMod1","High Gain pedestal RMS in module 1", 64, 0, 64, 56, 0, 56) ;
     393           0 :   h33->SetXTitle("x, cells"); h33->SetYTitle("z, cells");
     394           0 :   Add2RawsList(h33,kHGpedRMSMod1, expert, !image, !saveCorr) ;
     395           0 :   TH2F * h34 = new TH2F("hpedRMSHGxyMod2","High Gain pedestal RMS in module 2", 64, 0, 64, 56, 0, 56) ;
     396           0 :   h34->SetXTitle("x, cells"); h34->SetYTitle("z, cells");
     397           0 :   Add2RawsList(h34,kHGpedRMSMod2, expert, !image, !saveCorr) ;
     398           0 :   TH2F * h35 = new TH2F("hpedRMSHGxyMod3","High Gain pedestal RMS in module 3", 64, 0, 64, 56, 0, 56) ;
     399           0 :   h35->SetXTitle("x, cells"); h35->SetYTitle("z, cells");
     400           0 :   Add2RawsList(h35,kHGpedRMSMod3, expert, !image, !saveCorr) ;
     401           0 :   TH2F * h36 = new TH2F("hpedRMSHGxyMod4","High Gain pedestal RMS in module 4", 64, 0, 64, 56, 0, 56) ;
     402           0 :   h36->SetXTitle("x, cells"); h36->SetYTitle("z, cells");
     403           0 :   Add2RawsList(h36,kHGpedRMSMod4, expert, !image, !saveCorr) ;
     404             : 
     405           0 :   TH2F * h37 = new TH2F("hpedRMSLGxyMod0","Low Gain pedestal RMS in module 0", 64, 0, 64, 56, 0, 56) ;
     406           0 :   h37->SetXTitle("x, cells"); h37->SetYTitle("z, cells");
     407           0 :   Add2RawsList(h37,kLGpedRMSMod0, expert, !image, !saveCorr) ;
     408           0 :   TH2F * h38 = new TH2F("hpedRMSLGxyMod1","Low Gain pedestal RMS in module 1", 64, 0, 64, 56, 0, 56) ;
     409           0 :   h38->SetXTitle("x, cells"); h38->SetYTitle("z, cells");
     410           0 :   Add2RawsList(h38,kLGpedRMSMod1, expert, !image, !saveCorr) ;
     411           0 :   TH2F * h39 = new TH2F("hpedRMSLGxyMod2","Low Gain pedestal RMS in module 2", 64, 0, 64, 56, 0, 56) ;
     412           0 :   h39->SetXTitle("x, cells"); h39->SetYTitle("z, cells");
     413           0 :   Add2RawsList(h39,kLGpedRMSMod2, expert, !image, !saveCorr) ;
     414           0 :   TH2F * h40 = new TH2F("hpedRMSLGxyMod3","Low Gain pedestal RMS in module 3", 64, 0, 64, 56, 0, 56) ;
     415           0 :   h40->SetXTitle("x, cells"); h40->SetYTitle("z, cells");
     416           0 :   Add2RawsList(h40,kLGpedRMSMod3, expert, !image, !saveCorr) ;
     417           0 :   TH2F * h41 = new TH2F("hpedRMSLGxyMod4","Low Gain pedestal RMS in module 4", 64, 0, 64, 56, 0, 56) ;
     418           0 :   h41->SetXTitle("x, cells"); h41->SetYTitle("z, cells");
     419           0 :   Add2RawsList(h41,kLGpedRMSMod4, expert, !image, !saveCorr) ;
     420             :   //
     421           0 :   ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
     422           0 : }
     423             : 
     424             : //____________________________________________________________________________
     425             : void AliPHOSQADataMakerRec::MakeESDs(AliESDEvent * esd)
     426             : {
     427             :   // make QA data from ESDs 
     428             :   Int_t nTot = 0 ; 
     429             :   Double_t eTot = 0 ; 
     430           0 :   for ( Int_t index = 0; index < esd->GetNumberOfCaloClusters() ; index++ ) {
     431           0 :     AliESDCaloCluster * clu = esd->GetCaloCluster(index) ;
     432           0 :     if( clu->IsPHOS() ) {
     433           0 :       FillESDsData(kESDSpec,clu->E()) ;
     434           0 :       const Double_t * pid = clu->GetPID() ;
     435           0 :       FillESDsData(kESDpid,pid[AliPID::kPhoton]) ;
     436           0 :       eTot+=clu->E() ;
     437           0 :       nTot++ ;
     438           0 :     } 
     439             :   }
     440           0 :   FillESDsData(kESDNtot,nTot) ;
     441           0 :   FillESDsData(kESDEtot,eTot) ;
     442             :   //
     443           0 :   IncEvCountCycleESDs();
     444           0 :   IncEvCountTotalESDs();
     445             :   //
     446           0 : }
     447             : 
     448             : //____________________________________________________________________________
     449             : void AliPHOSQADataMakerRec::MakeRaws(AliRawReader* rawReader)
     450             : {
     451             :   //Fill prepared histograms with Raw digit properties
     452             : 
     453           0 :   rawReader->Reset() ;
     454             : 
     455           0 :   const TObjArray* maps = AliPHOSRecoParam::GetMappings();
     456           0 :   if(!maps) AliFatal("Cannot retrieve ALTRO mappings!!");
     457             : 
     458           0 :   AliAltroMapping *mapping[20];
     459           0 :   for(Int_t i = 0; i < 20; i++) {
     460           0 :     mapping[i] = (AliAltroMapping*)maps->At(i);
     461             :   }
     462             : 
     463           0 :   AliCaloRawStreamV3 fRawStream(rawReader,"PHOS",mapping);
     464             : 
     465             :   AliPHOSRawFitterv0 * fitter ;
     466           0 :   if     (strcmp(GetRecoParam()->EMCFitterVersion(),"v1")==0)
     467           0 :     fitter=new AliPHOSRawFitterv1();
     468           0 :   else if(strcmp(GetRecoParam()->EMCFitterVersion(),"v2")==0)
     469           0 :     fitter=new AliPHOSRawFitterv2();
     470             :   else
     471           0 :     fitter=new AliPHOSRawFitterv0();
     472           0 :   Double_t lgEtot=0. ;
     473           0 :   Double_t hgEtot=0. ;
     474             :   Int_t    lgNtot=0 ;
     475             :   Int_t    hgNtot=0 ;
     476             :   Int_t    hgNtotM1RCU0=0, hgNtotM1RCU1=0, hgNtotM1RCU2=0, hgNtotM1RCU3=0;
     477             :   Int_t    hgNtotM2RCU0=0, hgNtotM2RCU1=0, hgNtotM2RCU2=0, hgNtotM2RCU3=0;
     478             :   Int_t    hgNtotM3RCU0=0, hgNtotM3RCU1=0, hgNtotM3RCU2=0, hgNtotM3RCU3=0;
     479             : 
     480             : 
     481           0 :   while (fRawStream.NextDDL()) {
     482           0 :     Int_t RCUnum = fRawStream.GetDDLNumber() - 8;
     483             : 
     484           0 :     while (fRawStream.NextChannel()) {
     485           0 :       Int_t module   = fRawStream.GetModule();
     486           0 :       Int_t cellX    = fRawStream.GetCellX();
     487           0 :       Int_t cellZ    = fRawStream.GetCellZ();
     488           0 :       Int_t caloFlag = fRawStream.GetCaloFlag(); // 0=LG, 1=HG, 2=TRU
     489             : 
     490           0 :       if(caloFlag!=0 && caloFlag!=1) continue; //TRU data!
     491             : 
     492           0 :       fitter->SetChannelGeo(module+1,cellX+1,cellZ+1,caloFlag);
     493             : 
     494           0 :       if(fitter->GetAmpOffset()==0 && fitter->GetAmpThreshold()==0) {
     495           0 :         Short_t altroCFG1 = fRawStream.GetAltroCFG1();
     496           0 :         Bool_t ZeroSuppressionEnabled = (altroCFG1 >> 15) & 0x1;
     497           0 :         if(ZeroSuppressionEnabled) {
     498           0 :           Short_t offset = (altroCFG1 >> 10) & 0xf;
     499           0 :           Short_t threshold = altroCFG1 & 0x3ff;
     500           0 :           fitter->SubtractPedestals(kFALSE);
     501           0 :           fitter->SetAmpOffset(offset);
     502           0 :           fitter->SetAmpThreshold(threshold);
     503           0 :         }
     504             :         else
     505           0 :           fitter->SubtractPedestals(kTRUE);
     506           0 :       }
     507             : 
     508             :       Int_t nBunches = 0;
     509           0 :       while (fRawStream.NextBunch()) {
     510           0 :         nBunches++;
     511           0 :         if (nBunches > 1) continue;
     512           0 :         const UShort_t *sig = fRawStream.GetSignals();
     513           0 :         Int_t sigStart      = fRawStream.GetStartTimeBin();
     514           0 :         Int_t sigLength     = fRawStream.GetBunchLength();
     515           0 :         fitter->Eval(sig,sigStart,sigLength);
     516             :       } // End of NextBunch()
     517             : 
     518           0 :       Double_t energy = fitter->GetEnergy() ; 
     519           0 :       Double_t time   = fitter->GetTime() ;
     520             : 
     521           0 :       if (caloFlag == 0) { // LG
     522           0 :         FillRawsData(kLGpedRMS,fitter->GetPedestalRMS()) ;
     523           0 :         switch(module){
     524           0 :         case 0: FillRawsData(kLGmod0,cellX,cellZ) ; break ;
     525           0 :         case 1: FillRawsData(kLGmod1,cellX,cellZ) ; break ;
     526           0 :         case 2: FillRawsData(kLGmod2,cellX,cellZ) ; break ;
     527           0 :         case 3: FillRawsData(kLGmod3,cellX,cellZ) ; break ;
     528           0 :         case 4: FillRawsData(kLGmod4,cellX,cellZ) ; break ;
     529             :         }
     530           0 :         switch (module){
     531           0 :         case 0: FillRawsData(kLGpedRMSMod0,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     532           0 :         case 1: FillRawsData(kLGpedRMSMod1,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     533           0 :         case 2: FillRawsData(kLGpedRMSMod2,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     534           0 :         case 3: FillRawsData(kLGpedRMSMod3,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     535           0 :         case 4: FillRawsData(kLGpedRMSMod4,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     536             :         }
     537             :         //if quality was evaluated, fill histo
     538           0 :         if(strcmp(GetRecoParam()->EMCFitterVersion(),"v1")==0){
     539           0 :           switch (module){
     540           0 :           case 0: FillRawsData(kLGqualMod0,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     541           0 :           case 1: FillRawsData(kLGqualMod1,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     542           0 :           case 2: FillRawsData(kLGqualMod2,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     543           0 :           case 3: FillRawsData(kLGqualMod3,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     544           0 :           case 4: FillRawsData(kLGqualMod4,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     545             :           }
     546             :         }                                  
     547           0 :         FillRawsData(kNmodLG,module) ;
     548           0 :         FillRawsData(kLGtime,time) ; 
     549           0 :         FillRawsData(kSpecLG,energy) ;    
     550           0 :         lgEtot+=energy ;
     551           0 :         lgNtot++ ;   
     552           0 :       }
     553           0 :       else if (caloFlag == 1) { // HG        
     554           0 :         FillRawsData(kHGpedRMS,fitter->GetPedestalRMS()) ;
     555           0 :         switch (module){
     556           0 :         case 0: FillRawsData(kHGmod0,cellX,cellZ) ; break ;
     557           0 :         case 1: FillRawsData(kHGmod1,cellX,cellZ) ; break ;
     558           0 :         case 2: FillRawsData(kHGmod2,cellX,cellZ) ; break ;
     559           0 :         case 3: FillRawsData(kHGmod3,cellX,cellZ) ; break ;
     560           0 :         case 4: FillRawsData(kHGmod4,cellX,cellZ) ; break ;
     561             :         }
     562           0 :         switch (module){
     563           0 :         case 0: FillRawsData(kHGpedRMSMod0,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     564           0 :         case 1: FillRawsData(kHGpedRMSMod1,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     565           0 :         case 2: FillRawsData(kHGpedRMSMod2,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     566           0 :         case 3: FillRawsData(kHGpedRMSMod3,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     567           0 :         case 4: FillRawsData(kHGpedRMSMod4,cellX,cellZ,fitter->GetPedestalRMS()) ; break ;
     568             :         }               
     569             :         //if quality was evaluated, fill histo
     570           0 :         if(strcmp(GetRecoParam()->EMCFitterVersion(),"v1")==0){
     571           0 :           switch (module){
     572           0 :           case 0: FillRawsData(kHGqualMod0,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     573           0 :           case 1: FillRawsData(kHGqualMod1,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     574           0 :           case 2: FillRawsData(kHGqualMod2,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     575           0 :           case 3: FillRawsData(kHGqualMod3,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     576           0 :           case 4: FillRawsData(kHGqualMod4,cellX,cellZ,fitter->GetSignalQuality()) ; break ;
     577             :           }       
     578             :         }
     579           0 :         FillRawsData(kNmodHG,module) ; 
     580           0 :         FillRawsData(kNRCUHG,RCUnum) ; 
     581           0 :         FillRawsData(kHGtime,time) ;  
     582           0 :         FillRawsData(kSpecHG,energy) ;
     583           0 :         hgEtot+=energy ; 
     584           0 :         hgNtot++ ;  
     585           0 :         if(RCUnum==0)hgNtotM1RCU0++;
     586           0 :         if(RCUnum==1)hgNtotM1RCU1++;
     587           0 :         if(RCUnum==2)hgNtotM1RCU2++;
     588           0 :         if(RCUnum==3)hgNtotM1RCU3++;
     589           0 :         if(RCUnum==4)hgNtotM2RCU0++;
     590           0 :         if(RCUnum==5)hgNtotM2RCU1++;
     591           0 :         if(RCUnum==6)hgNtotM2RCU2++;
     592           0 :         if(RCUnum==7)hgNtotM2RCU3++;
     593           0 :         if(RCUnum==8)hgNtotM3RCU0++;
     594           0 :         if(RCUnum==9)hgNtotM3RCU1++;
     595           0 :         if(RCUnum==10)hgNtotM3RCU2++;
     596           0 :         if(RCUnum==11)hgNtotM3RCU3++;
     597             :       }
     598           0 :     }  // End of NextChannel
     599             :   } // End of NextDDL
     600           0 :   delete fitter;
     601             : 
     602           0 :   FillRawsData(kEtotLG,lgEtot) ; 
     603             :   TParameter<double> * p;
     604           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     605           0 :                                         FindObject(Form("%s_%s_%s", GetName(), 
     606           0 :                                                         AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), 
     607           0 :                                                         GetRawsData(kEtotLG)->GetName()))) ; 
     608           0 :   if (p) p->SetVal(lgEtot) ; 
     609           0 :   FillRawsData(kEtotHG,hgEtot) ;  
     610           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     611           0 :                                         FindObject(Form("%s_%s_%s", GetName(), 
     612           0 :                                                         AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), 
     613           0 :                                                         GetRawsData(kEtotHG)->GetName()))) ; 
     614           0 :   if (p) p->SetVal(hgEtot) ; 
     615           0 :   FillRawsData(kNtotLG,lgNtot) ;
     616           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     617           0 :                                         FindObject(Form("%s_%s_%s", GetName(), 
     618           0 :                                                         AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), 
     619           0 :                                                         GetRawsData(kNtotLG)->GetName()))) ; 
     620           0 :   if (p) p->SetVal(lgNtot) ; 
     621           0 :   FillRawsData(kNtotHG,hgNtot) ;
     622           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     623           0 :                                         FindObject(Form("%s_%s_%s", 
     624           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(), 
     625           0 :                                                         GetRawsData(kNtotHG)->GetName()))) ; 
     626           0 :   if (p) p->SetVal(hgNtot) ; 
     627             : 
     628           0 :   FillRawsData(kNtotHG_1_0,hgNtotM1RCU0) ;
     629           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     630           0 :                                         FindObject(Form("%s_%s_%s",
     631           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     632           0 :                                                         GetRawsData(kNtotHG_1_0)->GetName()))) ;
     633           0 :   if (p) p->SetVal(hgNtotM1RCU0) ;
     634             : 
     635           0 :   FillRawsData(kNtotHG_1_1,hgNtotM1RCU1) ;
     636           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     637           0 :                                         FindObject(Form("%s_%s_%s",
     638           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     639           0 :                                                         GetRawsData(kNtotHG_1_1)->GetName()))) ;
     640           0 :   if (p) p->SetVal(hgNtotM1RCU1) ;
     641             : 
     642           0 :   FillRawsData(kNtotHG_1_2,hgNtotM1RCU2) ;
     643           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     644           0 :                                         FindObject(Form("%s_%s_%s",
     645           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     646           0 :                                                         GetRawsData(kNtotHG_1_2)->GetName()))) ;
     647           0 :   if (p) p->SetVal(hgNtotM1RCU2) ;
     648             : 
     649           0 :   FillRawsData(kNtotHG_1_3,hgNtotM1RCU3) ;
     650           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     651           0 :                                         FindObject(Form("%s_%s_%s",
     652           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     653           0 :                                                         GetRawsData(kNtotHG_1_3)->GetName()))) ;
     654           0 :   if (p) p->SetVal(hgNtotM1RCU3) ;
     655             : 
     656           0 :   FillRawsData(kNtotHG_2_0,hgNtotM2RCU0) ;
     657           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     658           0 :                                         FindObject(Form("%s_%s_%s",
     659           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     660           0 :                                                         GetRawsData(kNtotHG_2_0)->GetName()))) ;
     661           0 :   if (p) p->SetVal(hgNtotM2RCU0) ;
     662             : 
     663           0 :   FillRawsData(kNtotHG_2_1,hgNtotM2RCU1) ;
     664           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     665           0 :                                         FindObject(Form("%s_%s_%s",
     666           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     667           0 :                                                         GetRawsData(kNtotHG_2_1)->GetName()))) ;
     668           0 :   if (p) p->SetVal(hgNtotM2RCU1) ;
     669             : 
     670           0 :   FillRawsData(kNtotHG_2_2,hgNtotM2RCU2) ;
     671           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     672           0 :                                         FindObject(Form("%s_%s_%s",
     673           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     674           0 :                                                         GetRawsData(kNtotHG_2_2)->GetName()))) ;
     675           0 :   if (p) p->SetVal(hgNtotM2RCU2) ;
     676             : 
     677           0 :   FillRawsData(kNtotHG_2_3,hgNtotM2RCU3) ;
     678           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     679           0 :                                         FindObject(Form("%s_%s_%s",
     680           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     681           0 :                                                         GetRawsData(kNtotHG_2_3)->GetName()))) ;
     682           0 :   if (p) p->SetVal(hgNtotM2RCU3) ;
     683             : 
     684           0 :   FillRawsData(kNtotHG_3_0,hgNtotM3RCU0) ;
     685           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     686           0 :                                         FindObject(Form("%s_%s_%s",
     687           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     688           0 :                                                         GetRawsData(kNtotHG_3_0)->GetName()))) ;
     689           0 :   if (p) p->SetVal(hgNtotM3RCU0) ;
     690             : 
     691           0 :   FillRawsData(kNtotHG_3_1,hgNtotM3RCU1) ;
     692           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     693           0 :                                         FindObject(Form("%s_%s_%s",
     694           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     695           0 :                                                         GetRawsData(kNtotHG_3_1)->GetName()))) ;
     696           0 :   if (p) p->SetVal(hgNtotM3RCU1) ;
     697             : 
     698           0 :   FillRawsData(kNtotHG_3_2,hgNtotM3RCU2) ;
     699           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     700           0 :                                         FindObject(Form("%s_%s_%s",
     701           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     702           0 :                                                         GetRawsData(kNtotHG_3_2)->GetName()))) ;
     703           0 :   if (p) p->SetVal(hgNtotM3RCU2) ;
     704             : 
     705           0 :   FillRawsData(kNtotHG_3_3,hgNtotM3RCU3) ;
     706           0 :   p = dynamic_cast<TParameter<double>*>(GetParameterList()->
     707           0 :                                         FindObject(Form("%s_%s_%s",
     708           0 :                                                         GetName(), AliQAv1::GetTaskName(AliQAv1::kRAWS).Data(),
     709           0 :                                                         GetRawsData(kNtotHG_3_3)->GetName()))) ;
     710           0 :   if (p) p->SetVal(hgNtotM3RCU3) ;
     711             : 
     712             :   //
     713           0 :   IncEvCountCycleRaws();
     714           0 :   IncEvCountTotalRaws();
     715             :   //
     716           0 : }
     717             : 
     718             : //____________________________________________________________________________
     719             : void AliPHOSQADataMakerRec::MakeDigits()
     720             : {
     721             :   // makes data from Digits
     722             :   
     723           0 :   if ( ! GetDigitsData(kDigitsMul) ) InitDigits() ;
     724           0 :   FillDigitsData(kDigitsMul,fDigitsArray->GetEntriesFast()) ; 
     725           0 :   TIter next(fDigitsArray) ; 
     726             :   AliPHOSDigit * digit ; 
     727           0 :   while ( (digit = dynamic_cast<AliPHOSDigit *>(next())) ) {
     728           0 :     FillDigitsData(kDigits, digit->GetEnergy()) ;
     729             :   }  
     730             :   //
     731           0 : }
     732             : 
     733             : //____________________________________________________________________________
     734             : void AliPHOSQADataMakerRec::MakeDigits(TTree * digitTree)
     735             : {
     736             :   // makes data from Digit Tree
     737           0 :   if (fDigitsArray) 
     738           0 :     fDigitsArray->Clear() ; 
     739             :   else 
     740           0 :     fDigitsArray = new TClonesArray("AliPHOSDigit", 1000) ; 
     741             :   
     742           0 :   TBranch * branch = digitTree->GetBranch("PHOS") ;
     743           0 :   if ( ! branch ) {AliWarning("PHOS branch in Digit Tree not found"); return;} 
     744           0 :   branch->SetAddress(&fDigitsArray) ;
     745           0 :   branch->GetEntry(0) ; 
     746           0 :   MakeDigits() ; 
     747             :   //
     748           0 :   IncEvCountCycleDigits();
     749           0 :   IncEvCountTotalDigits();
     750             :   //
     751           0 : }
     752             : 
     753             : //____________________________________________________________________________
     754             : void AliPHOSQADataMakerRec::MakeRecPoints(TTree * clustersTree)
     755             : {
     756             :   {
     757             :     // makes data from RecPoints
     758           0 :     TBranch *emcbranch = clustersTree->GetBranch("PHOSEmcRP");
     759           0 :     if (!emcbranch) { 
     760           0 :       AliError("can't get the branch with the PHOS EMC clusters !");
     761           0 :       return;
     762             :     }
     763             :     
     764           0 :     TObjArray * emcrecpoints = new TObjArray(100) ;
     765           0 :     emcbranch->SetAddress(&emcrecpoints);
     766           0 :     emcbranch->GetEntry(0);
     767             :     
     768           0 :     FillRecPointsData(kRPNtot,emcrecpoints->GetEntriesFast()) ; 
     769           0 :     TIter next(emcrecpoints) ; 
     770             :     AliPHOSEmcRecPoint * rp ; 
     771             :     Double_t eTot = 0. ; 
     772           0 :     while ( (rp = static_cast<AliPHOSEmcRecPoint *>(next())) ) {
     773           0 :       FillRecPointsData(kRPSpec, rp->GetEnergy()) ;
     774           0 :       Int_t mod = rp->GetPHOSMod() ;
     775           0 :       TVector3 pos ;
     776           0 :       rp->GetLocalPosition(pos) ;
     777           0 :       switch(mod){
     778           0 :         case 1: FillRecPointsData(kRPmod1,pos.X(),pos.Z()) ; break ;
     779           0 :         case 2: FillRecPointsData(kRPmod2,pos.X(),pos.Z()) ; break ;
     780           0 :         case 3: FillRecPointsData(kRPmod3,pos.X(),pos.Z()) ; break ;
     781           0 :         case 4: FillRecPointsData(kRPmod4,pos.X(),pos.Z()) ; break ;
     782           0 :         case 5: FillRecPointsData(kRPmod5,pos.X(),pos.Z()) ; break ;
     783             :       }
     784           0 :       eTot+= rp->GetEnergy() ;
     785           0 :     }
     786           0 :     FillRecPointsData(kRPEtot,eTot) ;
     787           0 :     emcrecpoints->Delete();
     788           0 :     delete emcrecpoints;
     789           0 :   }
     790             :   {
     791           0 :     TBranch *cpvbranch = clustersTree->GetBranch("PHOSCpvRP");
     792           0 :     if (!cpvbranch) { 
     793           0 :       AliError("can't get the branch with the PHOS CPV clusters !");
     794           0 :       return;
     795             :     }
     796           0 :     TObjArray *cpvrecpoints = new TObjArray(100) ;
     797           0 :     cpvbranch->SetAddress(&cpvrecpoints);
     798           0 :     cpvbranch->GetEntry(0);
     799             :     
     800           0 :     FillRecPointsData(kRPNcpv,cpvrecpoints->GetEntriesFast()) ; 
     801           0 :     cpvrecpoints->Delete();
     802           0 :     delete cpvrecpoints;
     803           0 :   }
     804             :   //
     805           0 :   IncEvCountCycleRecPoints();
     806           0 :   IncEvCountTotalRecPoints();
     807             :   //
     808           0 : }
     809             : 
     810             : //____________________________________________________________________________ 
     811             : void AliPHOSQADataMakerRec::StartOfDetectorCycle()
     812             : {
     813             :   //Detector specific actions at start of cycle
     814             :   
     815           0 : }

Generated by: LCOV version 1.11