LCOV - code coverage report
Current view: top level - ITS/ITSsim - AliITSQASSDDataMakerSim.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 116 182 63.7 %
Date: 2016-06-14 17:26:59 Functions: 9 17 52.9 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 2007-2009, 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             : /* $Id$   */
      17             : 
      18             : //  *************************************************************
      19             : //  Checks the quality assurance 
      20             : //  by comparing with reference data
      21             : //  contained in a DB
      22             : //  -------------------------------------------------------------
      23             : //  W. Ferrarese + P. Cerello Feb 2008
      24             : //  INFN Torino
      25             : //  SSD QA part: P. Christakoglou - NIKHEF/UU
      26             : 
      27             : // --- ROOT system ---
      28             : #include <TTree.h>
      29             : #include <TH1.h>
      30             : #include <TH2.h>
      31             : #include <TMath.h>
      32             : // --- Standard library ---
      33             : 
      34             : // --- AliRoot header files ---
      35             : #include "AliITS.h"
      36             : #include "AliITSmodule.h"
      37             : #include "AliITShit.h"
      38             : #include "AliITSdigit.h"
      39             : #include "AliITSpListItem.h"
      40             : #include "AliRun.h"
      41             : #include "AliITSQADataMakerSim.h"
      42             : #include "AliITSQASSDDataMakerSim.h"
      43             : #include "AliLog.h"
      44             : #include "AliQAv1.h"
      45             : #include "AliQAChecker.h"
      46             : #include "AliRawReader.h"
      47             : 
      48         116 : ClassImp(AliITSQASSDDataMakerSim)
      49             : 
      50             : //____________________________________________________________________________ 
      51             : AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(AliITSQADataMakerSim *aliITSQADataMakerSim) :
      52           1 : TObject(),
      53           1 : fAliITSQADataMakerSim(aliITSQADataMakerSim),
      54             : //fSSDhTask(0),
      55           1 : fSSDhHTask(0),
      56           1 : fSSDhSTask(0),
      57           1 : fSSDhDTask(0),
      58           1 : fGenOffsetH(0),
      59           1 : fGenOffsetS(0), 
      60           1 : fGenOffsetD(0) 
      61           5 : {
      62             :   //ctor used to discriminate OnLine-Offline analysis  
      63           2 :   fGenOffsetH=  new Int_t[AliRecoParam::kNSpecies];                       
      64           2 :   fGenOffsetS=  new Int_t[AliRecoParam::kNSpecies];                           
      65           2 :   fGenOffsetD=  new Int_t[AliRecoParam::kNSpecies];
      66          12 :   for(Int_t i=0; i<AliRecoParam::kNSpecies; i++) 
      67             :     {
      68           5 :       fGenOffsetH[i]= 0;
      69           5 :       fGenOffsetS[i]= 0;
      70           5 :       fGenOffsetD[i]= 0;
      71             :     }  
      72           2 : }
      73             : 
      74             : //____________________________________________________________________________ 
      75             : AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(const AliITSQASSDDataMakerSim& qadm) :
      76           0 : TObject(),
      77           0 : fAliITSQADataMakerSim(qadm.fAliITSQADataMakerSim),
      78             : //fSSDhTask(qadm.fSSDhTask),
      79           0 : fSSDhHTask(qadm.fSSDhHTask),
      80           0 : fSSDhSTask(qadm.fSSDhSTask),
      81           0 : fSSDhDTask(qadm.fSSDhDTask),
      82           0 : fGenOffsetH(qadm.fGenOffsetH), 
      83           0 : fGenOffsetS(qadm.fGenOffsetS), 
      84           0 : fGenOffsetD(qadm.fGenOffsetD) 
      85           0 : {
      86             :   //copy ctor 
      87           0 :   fAliITSQADataMakerSim->SetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ; 
      88           0 :   fAliITSQADataMakerSim->SetTitle((const char*)qadm.fAliITSQADataMakerSim->GetTitle());
      89           0 :   }
      90             : 
      91             : //__________________________________________________________________
      92             : AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac ) {
      93             :   // Equal operator.
      94           0 :   this->~AliITSQASSDDataMakerSim();
      95           0 :   new(this) AliITSQASSDDataMakerSim(qac);
      96           0 :   return *this;
      97           0 : }
      98             : 
      99             : //____________________________________________________________________________ 
     100             : void AliITSQASSDDataMakerSim::StartOfDetectorCycle() {
     101             :   //Detector specific actions at start of cycle
     102          24 :   AliDebug(AliQAv1::GetQADebugLevel(),"AliITSQADM::Start of SSD Cycle\n");
     103           6 : }
     104             : 
     105             : //____________________________________________________________________________ 
     106             : void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t /*task*/, TObjArray** /*list*/) {
     107             :   // launch the QA checking
     108           0 :   AliDebug(AliQAv1::GetQADebugLevel(),"AliITSDM instantiates checker with Run(AliQAv1::kITS, task, list)\n"); 
     109             :   
     110             : //  AliQAChecker::Instance()->Run( AliQAv1::kITS , task, list);
     111           0 : }
     112             : 
     113             : //____________________________________________________________________________ 
     114             : Int_t AliITSQASSDDataMakerSim::InitDigits() { 
     115             :   // Initialization for DIGIT data - SSD -
     116             :   const Bool_t expert   = kTRUE ; 
     117             :   const Bool_t image    = kTRUE ; 
     118             :   Int_t rv = 0 ; 
     119             :  // fGenOffsetD = (fAliITSQADataMakerSim->fDigitsQAList[AliRecoParam::kDefault])->GetEntries();
     120             : 
     121             :   // custom code here
     122           2 :   TH1F *fHistSSDModule = new TH1F("fHistSSDDigitsModule",
     123             :                                   "SSD Digits Module;SSD Module Number;N_{DIGITS}",
     124             :                                   1698,499.5,2197.5);  
     125           2 :   rv = fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModule,
     126           1 :                                         fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 0, !expert, image);
     127           1 :   fSSDhDTask += 1;
     128           1 :   TH2F *fHistSSDModuleStrip = new TH2F("fHistSSDDigitsModuleStrip",
     129             :                                        "SSD Digits Module Strip;N_{Strip};N_{Module}",
     130             :                                        1540,0,1540,1698,499.5,2197.5);  
     131           2 :   rv = fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModuleStrip,
     132           1 :                                         fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 1, !expert, image);
     133           1 :   fSSDhDTask += 1;
     134             : 
     135           3 :   AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD Digits histograms booked\n",fSSDhDTask));
     136           1 :   return rv ; 
     137           0 : }
     138             : 
     139             : //____________________________________________________________________________
     140             : Int_t AliITSQASSDDataMakerSim::MakeDigits(TTree *digits) 
     141             : { 
     142             :   // Fill QA for DIGIT - SSD -
     143             :   Int_t rv = 0 ; 
     144             : 
     145           8 :   AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");
     146           4 :   fITS->SetTreeAddress();
     147           4 :   TClonesArray *iSSDdigits  = fITS->DigitsAddress(2);
     148       13592 :   for(Int_t iModule = 500; iModule < 2198; iModule++) {
     149        6792 :     iSSDdigits->Clear();
     150        6792 :     digits->GetEvent(iModule);    
     151        6792 :     Int_t ndigits = iSSDdigits->GetEntries();
     152        6792 :     fAliITSQADataMakerSim->FillDigitsData(fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 0,iModule,ndigits);
     153        6792 :     if(ndigits != 0)
     154       16572 :       AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Digits: %d",iModule,ndigits));
     155             :  
     156       38514 :     for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {
     157       12465 :       AliITSdigit *dig = (AliITSdigit*)iSSDdigits->UncheckedAt(iDigit);
     158       12465 :       Int_t fStripNumber = (dig->GetCoord1() == 0) ? dig->GetCoord2() : dig->GetCoord2() + fgkNumberOfPSideStrips;
     159       12465 :       fAliITSQADataMakerSim->FillDigitsData(fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 1,fStripNumber,iModule,dig->GetSignal());
     160             :     }//digit loop
     161             :   }//module loop
     162             :   //
     163           4 :   return rv ; 
     164             : }
     165             : 
     166             : //____________________________________________________________________________ 
     167             : Int_t AliITSQASSDDataMakerSim::InitSDigits() { 
     168             :   // Initialization for SDIGIT data - SSD -
     169             :   const Bool_t expert   = kTRUE ; 
     170             :   const Bool_t image    = kTRUE ; 
     171             :   Int_t rv = 0 ; 
     172             :   //fGenOffsetS = (fAliITSQADataMakerSim->fSDigitsQAList[AliRecoParam::kDefault])->GetEntries();
     173             : 
     174             :   // custom code here
     175           0 :   TH1F *fHistSSDModule = new TH1F("fHistSSDSDigitsModule",
     176             :                                   "SSD SDigits Module;SSD Module Number;N_{SDIGITS}",
     177             :                                   1698,499.5,2197.5);  
     178           0 :   rv = fAliITSQADataMakerSim->Add2SDigitsList(fHistSSDModule,
     179           0 :                                          fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()] + 0, !expert, image);
     180           0 :   fSSDhSTask += 1;  
     181             : 
     182           0 :   AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD SDigits histograms booked\n",fSSDhSTask));
     183             :   //
     184           0 :   return rv ; 
     185           0 : }
     186             : 
     187             : //____________________________________________________________________________
     188             : Int_t AliITSQASSDDataMakerSim::MakeSDigits(TTree *sdigits) { 
     189             :   // Fill QA for SDIGIT - SSD -
     190             :   Int_t rv = 0 ; 
     191             :  
     192           0 :   static TClonesArray iSSDEmpty("AliITSpListItem",10000);
     193           0 :   iSSDEmpty.Clear();
     194           0 :   TClonesArray *iSSDsdigits = &iSSDEmpty;
     195             : 
     196             :   //  AliDebug(AliQAv1::GetQADebugLevel(), Form("Trying to access the sdigits histogram: %d\n",fGenOffsetS));
     197             : 
     198           0 :   TBranch *brchSDigits = sdigits->GetBranch("ITS");
     199           0 :   brchSDigits->SetAddress(&iSSDsdigits);
     200           0 :   for(Int_t iModule = 500; iModule < 2198; iModule++) {
     201           0 :     iSSDsdigits->Clear();
     202           0 :     sdigits->GetEvent(iModule);    
     203           0 :     Int_t ndigits = iSSDsdigits->GetEntries();
     204           0 :     fAliITSQADataMakerSim->FillSDigitsData(fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()] + 0,iModule,ndigits);
     205           0 :     if(ndigits != 0)
     206           0 :       AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Digits: %d",iModule,ndigits));
     207             : 
     208             : //     for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {
     209             : //       AliITSpListItem *dig=(AliITSpListItem*)iSSDsdigits->At(iDigit);
     210             : //       dig=0;
     211             : //     }//digit loop
     212             :   }//module loop
     213             :   //
     214           0 :   return rv ; 
     215           0 : }
     216             : 
     217             : //____________________________________________________________________________ 
     218             : Int_t AliITSQASSDDataMakerSim::InitHits() { 
     219             :   // Initialization for HITS data - SSD -
     220             :   const Bool_t expert   = kTRUE ; 
     221             :   const Bool_t image    = kTRUE ; 
     222             :   Int_t rv = 0 ; 
     223             : 
     224             :   //fGenOffsetH = (fAliITSQADataMakerSim->fHitsQAList[fEventSpecie])->GetEntries();
     225             : 
     226             :   // custom code here
     227           2 :   TH1F *fHistSSDModule = new TH1F("fHistSSDHitsModule",
     228             :                                   "SSD Hits Module;SSD Module Number;N_{HITS}",
     229             :                                   1698,499.5,2197.5); 
     230           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDModule,
     231           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 0, !expert, image);
     232           1 :   fSSDhHTask += 1;
     233           1 :   TH1F *fHistSSDGlobalX = new TH1F("fHistSSDHitsGlobalX",
     234             :                                    "SSD Hits Global X;x [cm];Entries",
     235             :                                    1000,-50.,50.);
     236           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalX,
     237           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 1, !expert, image);
     238           1 :   fSSDhHTask += 1;
     239           1 :   TH1F *fHistSSDGlobalY = new TH1F("fHistSSDHitsGlobalY",
     240             :                                    "SSD Hits Global Y;y [cm];Entries",
     241             :                                    1000,-50.,50.);
     242           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalY,
     243           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 2, !expert, image);
     244           1 :   fSSDhHTask += 1;
     245           1 :   TH1F *fHistSSDGlobalZ = new TH1F("fHistSSDHitsGlobalZ",
     246             :                                    "SSD Hits Global Z ;z [cm];Entries",
     247             :                                    1000,-60.,60.);
     248           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalZ,
     249           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 3, !expert, image);
     250           1 :   fSSDhHTask += 1;
     251           1 :   TH1F *fHistSSDLocalX = new TH1F("fHistSSDHitsLocalX",
     252             :                                   "SSD Hits Local X;x [cm];Entries",
     253             :                                   1000,-4.,4.);
     254           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalX,
     255           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 4, !expert, image);
     256           1 :   fSSDhHTask += 1;
     257           1 :   TH1F *fHistSSDLocalY = new TH1F("fHistSSDHitsLocalY",
     258             :                                   "SSD Hits Local Y;y [cm];Entries",
     259             :                                   1000,-0.1,0.1);
     260           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalY,
     261           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 5, !expert, image);
     262           1 :   fSSDhHTask += 1;
     263           1 :   TH1F *fHistSSDLocalZ = new TH1F("fHistSSDHitsLocalZ",
     264             :                                   "SSD Hits Local Z;z [cm];Entries",
     265             :                                   1000,-4.,4.);
     266           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalZ,
     267           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 6, !expert, image);
     268           1 :   fSSDhHTask += 1;
     269           1 :   TH1F *fHistSSDIonization = new TH1F("fHistSSDHitsIonization",
     270             :                                       "SSD Hits Ionization;log(dE/dx) [KeV];N_{Hits}",
     271             :                                       100,-7,-2);
     272           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDIonization,
     273           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 7, !expert, image);
     274           1 :   fSSDhHTask += 1;
     275           1 :   TH2F *fHistSSDGlobalXY = new TH2F("fHistSSDHitsGlobalXY",
     276             :                                     "SSD Hits Global XY;x [cm];y [cm]",
     277             :                                     1000,-50.,50.,
     278             :                                     1000,-50.,50.);
     279           2 :   rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalXY,
     280           1 :                                       fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 8, !expert, image);
     281           1 :   fSSDhHTask += 1;
     282             :  
     283           3 :   AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD Hits histograms booked\n",fSSDhHTask));
     284           1 :   return rv ; 
     285           0 : }
     286             : 
     287             : 
     288             : //____________________________________________________________________________
     289             : Int_t AliITSQASSDDataMakerSim::MakeHits(TTree *hits) { 
     290             :   // Fill QA for HITS - SSD -
     291             :   Int_t rv = 0 ; 
     292             :  
     293           8 :   AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");
     294           4 :   fITS->SetTreeAddress();
     295           4 :   Int_t nmodules;
     296           4 :   fITS->InitModules(-1,nmodules);
     297           4 :   fITS->FillModules(hits,0);
     298       13592 :   for(Int_t iModule = 500; iModule < 2198; iModule++) {
     299        6792 :     AliITSmodule *module = fITS->GetModule(iModule);
     300        6792 :     TObjArray *arrHits = module->GetHits();
     301        6792 :     Int_t nhits = arrHits->GetEntriesFast();
     302        6792 :     if(nhits != 0)
     303         465 :       AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Hits: %d",iModule,nhits));
     304       14530 :     for (Int_t iHit = 0; iHit < nhits; iHit++) {
     305         473 :       AliITShit *hit = (AliITShit*) arrHits->At(iHit);
     306             :       
     307         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 0,iModule);
     308         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 1,hit->GetXG());
     309         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 2,hit->GetYG());
     310         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 3,hit->GetZG());
     311         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 4,hit->GetXL());
     312         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 5,hit->GetYL());
     313         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 6,hit->GetZL());
     314         473 :       if(hit->GetIonization())
     315         473 :         fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 7,TMath::Log10(hit->GetIonization()));
     316         473 :       fAliITSQADataMakerSim->FillHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 8,hit->GetXG(),hit->GetYG());
     317             :     }//hit loop
     318             :   }//module loop  
     319           4 :   return rv ; 
     320           4 : }
     321             : 
     322             : //____________________________________________________________________________ 
     323             : Int_t AliITSQASSDDataMakerSim::GetOffset(AliQAv1::TASKINDEX_t task,Int_t specie){
     324             :   // Returns histogram offset according to the specified task
     325             :   Int_t offset=0;
     326           0 :   if( task == AliQAv1::kHITS){
     327           0 :     offset=fGenOffsetH[specie];  
     328           0 :   }
     329           0 :   else if( task == AliQAv1::kSDIGITS) {
     330           0 :     offset=fGenOffsetS[specie];   
     331           0 :   }
     332           0 :   else if( task == AliQAv1::kDIGITS) {
     333           0 :     offset=fGenOffsetD[specie];   
     334           0 :   }
     335             :   else {
     336           0 :     AliInfo("No task has been selected. TaskHisto set to zero.\n");
     337             :   }
     338             : 
     339           0 :   return offset;
     340             : }
     341             : 
     342             : 
     343             : //____________________________________________________________________________ 
     344             : void AliITSQASSDDataMakerSim::SetOffset(AliQAv1::TASKINDEX_t task, Int_t offset,Int_t specie ){
     345             :   // Returns histogram offset according to the specified task
     346           4 :   if( task == AliQAv1::kHITS){
     347           1 :     fGenOffsetH[specie] = offset;  
     348           1 :   }
     349           1 :   else if( task == AliQAv1::kSDIGITS) {
     350           0 :     fGenOffsetS[specie] = offset;   
     351           0 :   }
     352           1 :   else if( task == AliQAv1::kDIGITS) {
     353           1 :     fGenOffsetD[specie] = offset;   
     354           1 :   }
     355             :   else {
     356           0 :     AliInfo("No task has been selected. TaskHisto set to zero.\n");
     357             :   }
     358           2 : }
     359             : 
     360             : //____________________________________________________________________________ 
     361             : Int_t AliITSQASSDDataMakerSim::GetTaskHisto(AliQAv1::TASKINDEX_t task) {
     362             :   // Returns the number of booked histograms for the selected task
     363             :   Int_t histotot=0;
     364           0 :   if( task == AliQAv1::kHITS) {
     365           0 :     histotot=fSSDhHTask ;  
     366           0 :   }
     367           0 :   else if( task == AliQAv1::kSDIGITS) {
     368           0 :     histotot=fSSDhSTask;   
     369           0 :   }
     370           0 :   else if( task == AliQAv1::kDIGITS) {
     371           0 :     histotot=fSSDhDTask ;   
     372           0 :   }
     373             :   else {
     374           0 :     AliInfo("No task has been selected. TaskHisto set to zero.\n");
     375             :   }
     376           0 :   return histotot;
     377             : 
     378             : }

Generated by: LCOV version 1.11