X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=ITS%2FAliITSQASSDDataMakerSim.cxx;h=33ecda9a72970f4ad3372ee7be53b1b33940b72d;hp=8698f9c4149dd6345f07ce800f73e4e1452cccd3;hb=b0e25852769a15330f327ed7af0c652a80fdb908;hpb=c71529b00c7900f5b40c760831acda8d0e1d6a38 diff --git a/ITS/AliITSQASSDDataMakerSim.cxx b/ITS/AliITSQASSDDataMakerSim.cxx index 8698f9c4149..33ecda9a729 100644 --- a/ITS/AliITSQASSDDataMakerSim.cxx +++ b/ITS/AliITSQASSDDataMakerSim.cxx @@ -1,273 +1,374 @@ -/************************************************************************** - * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -/* $Id$ */ - -// ************************************************************* -// Checks the quality assurance -// by comparing with reference data -// contained in a DB -// ------------------------------------------------------------- -// W. Ferrarese + P. Cerello Feb 2008 -// INFN Torino -// SSD QA part: P. Christakoglou - NIKHEF/UU - -// --- ROOT system --- -#include -#include -#include -#include -// --- Standard library --- - -// --- AliRoot header files --- -#include "AliITS.h" -#include "AliITSmodule.h" -#include "AliITShit.h" -#include "AliITSdigit.h" -#include "AliITSpListItem.h" -#include "AliRun.h" -#include "AliITSQADataMakerSim.h" -#include "AliITSQASSDDataMakerSim.h" -#include "AliLog.h" -#include "AliQA.h" -#include "AliQAChecker.h" -#include "AliRawReader.h" - -ClassImp(AliITSQASSDDataMakerSim) - -//____________________________________________________________________________ -AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(AliITSQADataMakerSim *aliITSQADataMakerSim) : -TObject(), -fAliITSQADataMakerSim(aliITSQADataMakerSim), -fSSDhDigits(0), -fSSDhSDigits(0), -fSSDhHits(0), -fGenOffset(0) { - //ctor used to discriminate OnLine-Offline analysis -} - -//____________________________________________________________________________ -AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(const AliITSQASSDDataMakerSim& qadm) : -TObject(), -fAliITSQADataMakerSim(qadm.fAliITSQADataMakerSim), -fSSDhDigits(qadm.fSSDhDigits), -fSSDhSDigits(qadm.fSSDhSDigits), -fSSDhHits(qadm.fSSDhHits), -fGenOffset(qadm.fGenOffset) { - //copy ctor - fAliITSQADataMakerSim->SetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ; - fAliITSQADataMakerSim->SetTitle((const char*)qadm.fAliITSQADataMakerSim->GetTitle()); - } - -//__________________________________________________________________ -AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac ) { - // Equal operator. - this->~AliITSQASSDDataMakerSim(); - new(this) AliITSQASSDDataMakerSim(qac); - return *this; -} - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::StartOfDetectorCycle() { - //Detector specific actions at start of cycle - AliDebug(1,"AliITSQADM::Start of SSD Cycle\n"); -} - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t /*task*/, TObjArray* /*list*/) { - // launch the QA checking - AliDebug(1,"AliITSDM instantiates checker with Run(AliQA::kITS, task, list)\n"); - - //AliQAChecker::Instance()->Run( AliQA::kITS , task, list); -} - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::InitDigits() { - // Initialization for DIGIT data - SSD - - fGenOffset = (fAliITSQADataMakerSim->fDigitsQAList)->GetEntries(); - - // custom code here - TH1F *fHistSSDModule = new TH1F("fHistSSDDigitsModule", - ";SSD Module Number;N_{DIGITS}", - 1698,499.5,2197.5); - fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModule, - fGenOffset + fSSDhDigits); - fSSDhDigits += 1; - TH2F *fHistSSDModuleStrip = new TH2F("fHistSSDDigitsModuleStrip", - ";N_{Strip};N_{Module}", - 1540,0,1540,1698,499.5,2197.5); - fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModuleStrip, - fGenOffset + fSSDhDigits); - fSSDhDigits += 1; - - AliDebug(1,Form("%d SSD Digits histograms booked\n",fSSDhDigits)); - -} - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::MakeDigits(TTree *digits) { - // Fill QA for DIGIT - SSD - - AliITS *fITS = (AliITS*)gAlice->GetModule("ITS"); - fITS->SetTreeAddress(); - TClonesArray *iSSDdigits = fITS->DigitsAddress(2); - for(Int_t iModule = 500; iModule < 2198; iModule++) { - iSSDdigits->Clear(); - digits->GetEvent(iModule); - Int_t ndigits = iSSDdigits->GetEntries(); - fAliITSQADataMakerSim->GetDigitsData(fGenOffset + 0)->Fill(iModule,ndigits); - if(ndigits != 0) - AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits)); - - for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) { - AliITSdigit *dig = (AliITSdigit*)iSSDdigits->UncheckedAt(iDigit); - Int_t fStripNumber = (dig->GetCoord1() == 0) ? dig->GetCoord2() : dig->GetCoord2() + fgkNumberOfPSideStrips; - ((TH2F *)fAliITSQADataMakerSim->GetDigitsData(fGenOffset + 1))->Fill(fStripNumber,iModule,dig->GetSignal()); - }//digit loop - }//module loop -} - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::InitSDigits() { - // Initialization for SDIGIT data - SSD - - fGenOffset = (fAliITSQADataMakerSim->fSDigitsQAList)->GetEntries(); - - // custom code here - TH1F *fHistSSDModule = new TH1F("fHistSSDSDigitsModule", - ";SSD Module Number;N_{SDIGITS}", - 1698,499.5,2197.5); - fAliITSQADataMakerSim->Add2SDigitsList(fHistSSDModule, - fGenOffset + fSSDhSDigits); - fSSDhSDigits += 1; - - AliDebug(1,Form("%d SSD SDigits histograms booked\n",fSSDhSDigits)); -} - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::MakeSDigits(TTree *sdigits) { - // Fill QA for SDIGIT - SSD - - TClonesArray *iSSDsdigits = new TClonesArray("AliITSpListItem",10000); - TBranch *brchSDigits = sdigits->GetBranch("ITS"); - brchSDigits->SetAddress(&iSSDsdigits); - for(Int_t iModule = 500; iModule < 2198; iModule++) { - iSSDsdigits->Clear(); - sdigits->GetEvent(iModule); - Int_t ndigits = iSSDsdigits->GetEntries(); - fAliITSQADataMakerSim->GetSDigitsData(fGenOffset + 0)->Fill(iModule,ndigits); - if(ndigits != 0) - AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits)); - - for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) { - AliITSpListItem *dig=(AliITSpListItem*)iSSDsdigits->At(iDigit); - dig=0; - }//digit loop - }//module loop -} - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::InitHits() { - // Initialization for HITS data - SSD - - fGenOffset = (fAliITSQADataMakerSim->fHitsQAList)->GetEntries(); - - // custom code here - TH1F *fHistSSDModule = new TH1F("fHistSSDHitsModule", - ";SDD Module Number;N_{HITS}", - 1698,499.5,2197.5); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDModule, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH1F *fHistSSDGlobalX = new TH1F("fHistSSDHitsGlobalX", - ";x [cm];Entries", - 1000,-50.,50.); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalX, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH1F *fHistSSDGlobalY = new TH1F("fHistSSDHitsGlobalY", - ";y [cm];Entries", - 1000,-50.,50.); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalY, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH1F *fHistSSDGlobalZ = new TH1F("fHistSSDHitsGlobalZ", - ";z [cm];Entries", - 1000,-60.,60.); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalZ, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH1F *fHistSSDLocalX = new TH1F("fHistSSDHitsLocalX", - ";x [cm];Entries", - 1000,-4.,4.); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalX, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH1F *fHistSSDLocalY = new TH1F("fHistSSDHitsLocalY", - ";y [cm];Entries", - 1000,-0.1,0.1); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalY, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH1F *fHistSSDLocalZ = new TH1F("fHistSSDHitsLocalZ", - ";z [cm];Entries", - 1000,-4.,4.); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalZ, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH1F *fHistSSDIonization = new TH1F("fHistSSDHitsIonization", - ";log(dE/dx) [KeV];N_{Hits}", - 100,-7,-2); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDIonization, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - TH2F *fHistSSDGlobalXY = new TH2F("fHistSSDHitsGlobalXY", - ";x [cm];y [cm]", - 1000,-50.,50., - 1000,-50.,50.); - fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalXY, - fGenOffset + fSSDhHits); - fSSDhHits += 1; - - AliDebug(1,Form("%d SSD Hits histograms booked\n",fSSDhHits)); -} - - -//____________________________________________________________________________ -void AliITSQASSDDataMakerSim::MakeHits(TTree *hits) { - // Fill QA for HITS - SSD - - AliITS *fITS = (AliITS*)gAlice->GetModule("ITS"); - fITS->SetTreeAddress(); - Int_t nmodules; - fITS->InitModules(-1,nmodules); - fITS->FillModules(hits,0); - for(Int_t iModule = 500; iModule < 2198; iModule++) { - AliITSmodule *module = fITS->GetModule(iModule); - TObjArray *arrHits = module->GetHits(); - Int_t nhits = arrHits->GetEntriesFast(); - if(nhits != 0) - AliDebug(1,Form("Module: %d - Hits: %d",iModule,nhits)); - for (Int_t iHit = 0; iHit < nhits; iHit++) { - AliITShit *hit = (AliITShit*) arrHits->At(iHit); - - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 0)->Fill(iModule); - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 1)->Fill(hit->GetXG()); - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 2)->Fill(hit->GetYG()); - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 3)->Fill(hit->GetZG()); - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 4)->Fill(hit->GetXL()); - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 5)->Fill(hit->GetYL()); - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 6)->Fill(hit->GetZL()); - if(hit->GetIonization()) - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 7)->Fill(TMath::Log10(hit->GetIonization())); - fAliITSQADataMakerSim->GetHitsData(fGenOffset + 8)->Fill(hit->GetXG(),hit->GetYG()); - }//hit loop - }//module loop -} +/************************************************************************** + * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* $Id$ */ + +// ************************************************************* +// Checks the quality assurance +// by comparing with reference data +// contained in a DB +// ------------------------------------------------------------- +// W. Ferrarese + P. Cerello Feb 2008 +// INFN Torino +// SSD QA part: P. Christakoglou - NIKHEF/UU + +// --- ROOT system --- +#include +#include +#include +#include +// --- Standard library --- + +// --- AliRoot header files --- +#include "AliITS.h" +#include "AliITSmodule.h" +#include "AliITShit.h" +#include "AliITSdigit.h" +#include "AliITSpListItem.h" +#include "AliRun.h" +#include "AliITSQADataMakerSim.h" +#include "AliITSQASSDDataMakerSim.h" +#include "AliLog.h" +#include "AliQAv1.h" +#include "AliQAChecker.h" +#include "AliRawReader.h" + +ClassImp(AliITSQASSDDataMakerSim) + +//____________________________________________________________________________ +AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(AliITSQADataMakerSim *aliITSQADataMakerSim) : +TObject(), +fAliITSQADataMakerSim(aliITSQADataMakerSim), +//fSSDhTask(0), +fSSDhHTask(0), +fSSDhSTask(0), +fSSDhDTask(0), +fGenOffsetH(0), +fGenOffsetS(0), +fGenOffsetD(0) +{ + //ctor used to discriminate OnLine-Offline analysis + fGenOffsetH= new Int_t[AliRecoParam::kNSpecies]; + fGenOffsetS= new Int_t[AliRecoParam::kNSpecies]; + fGenOffsetD= new Int_t[AliRecoParam::kNSpecies]; + for(Int_t i=0; iSetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ; + fAliITSQADataMakerSim->SetTitle((const char*)qadm.fAliITSQADataMakerSim->GetTitle()); + } + +//__________________________________________________________________ +AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac ) { + // Equal operator. + this->~AliITSQASSDDataMakerSim(); + new(this) AliITSQASSDDataMakerSim(qac); + return *this; +} + +//____________________________________________________________________________ +void AliITSQASSDDataMakerSim::StartOfDetectorCycle() { + //Detector specific actions at start of cycle + AliDebug(AliQAv1::GetQADebugLevel(),"AliITSQADM::Start of SSD Cycle\n"); +} + +//____________________________________________________________________________ +void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t /*task*/, TObjArray* /*list*/) { + // launch the QA checking + AliDebug(AliQAv1::GetQADebugLevel(),"AliITSDM instantiates checker with Run(AliQAv1::kITS, task, list)\n"); + +// AliQAChecker::Instance()->Run( AliQAv1::kITS , task, list); +} + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::InitDigits() { + // Initialization for DIGIT data - SSD - + const Bool_t expert = kTRUE ; + const Bool_t image = kTRUE ; + Int_t rv = 0 ; + // fGenOffsetD = (fAliITSQADataMakerSim->fDigitsQAList[AliRecoParam::kDefault])->GetEntries(); + + // custom code here + TH1F *fHistSSDModule = new TH1F("fHistSSDDigitsModule", + "SSD Digits Module;SSD Module Number;N_{DIGITS}", + 1698,499.5,2197.5); + rv = fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModule, + fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 0, !expert, image); + fSSDhDTask += 1; + TH2F *fHistSSDModuleStrip = new TH2F("fHistSSDDigitsModuleStrip", + "SSD Digits Module Strip;N_{Strip};N_{Module}", + 1540,0,1540,1698,499.5,2197.5); + rv = fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModuleStrip, + fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 1, !expert, image); + fSSDhDTask += 1; + + AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD Digits histograms booked\n",fSSDhDTask)); + return rv ; +} + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::MakeDigits(TTree *digits) { + // Fill QA for DIGIT - SSD - + Int_t rv = 0 ; + + AliITS *fITS = (AliITS*)gAlice->GetModule("ITS"); + fITS->SetTreeAddress(); + TClonesArray *iSSDdigits = fITS->DigitsAddress(2); + for(Int_t iModule = 500; iModule < 2198; iModule++) { + iSSDdigits->Clear(); + digits->GetEvent(iModule); + Int_t ndigits = iSSDdigits->GetEntries(); + fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 0)->Fill(iModule,ndigits); + if(ndigits != 0) + AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Digits: %d",iModule,ndigits)); + + for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) { + AliITSdigit *dig = (AliITSdigit*)iSSDdigits->UncheckedAt(iDigit); + Int_t fStripNumber = (dig->GetCoord1() == 0) ? dig->GetCoord2() : dig->GetCoord2() + fgkNumberOfPSideStrips; + ((TH2F *)fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()] + 1))->Fill(fStripNumber,iModule,dig->GetSignal()); + }//digit loop + }//module loop + return rv ; +} + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::InitSDigits() { + // Initialization for SDIGIT data - SSD - + const Bool_t expert = kTRUE ; + const Bool_t image = kTRUE ; + Int_t rv = 0 ; + //fGenOffsetS = (fAliITSQADataMakerSim->fSDigitsQAList[AliRecoParam::kDefault])->GetEntries(); + + // custom code here + TH1F *fHistSSDModule = new TH1F("fHistSSDSDigitsModule", + "SSD SDigits Module;SSD Module Number;N_{SDIGITS}", + 1698,499.5,2197.5); + rv = fAliITSQADataMakerSim->Add2SDigitsList(fHistSSDModule, + fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()] + 0, !expert, image); + fSSDhSTask += 1; + + AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD SDigits histograms booked\n",fSSDhSTask)); + return rv ; +} + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::MakeSDigits(TTree *sdigits) { + // Fill QA for SDIGIT - SSD - + Int_t rv = 0 ; + + static TClonesArray iSSDEmpty("AliITSpListItem",10000); + iSSDEmpty.Clear(); + TClonesArray *iSSDsdigits = &iSSDEmpty; + + AliDebug(AliQAv1::GetQADebugLevel(), Form("Trying to access the sdigits histogram: %d\n",fGenOffsetS)); + + TBranch *brchSDigits = sdigits->GetBranch("ITS"); + brchSDigits->SetAddress(&iSSDsdigits); + for(Int_t iModule = 500; iModule < 2198; iModule++) { + iSSDsdigits->Clear(); + sdigits->GetEvent(iModule); + Int_t ndigits = iSSDsdigits->GetEntries(); + fAliITSQADataMakerSim->GetSDigitsData(fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()] + 0)->Fill(iModule,ndigits); + if(ndigits != 0) + AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Digits: %d",iModule,ndigits)); + + for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) { + AliITSpListItem *dig=(AliITSpListItem*)iSSDsdigits->At(iDigit); + dig=0; + }//digit loop + }//module loop + return rv ; +} + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::InitHits() { + // Initialization for HITS data - SSD - + const Bool_t expert = kTRUE ; + const Bool_t image = kTRUE ; + Int_t rv = 0 ; + + //fGenOffsetH = (fAliITSQADataMakerSim->fHitsQAList[fEventSpecie])->GetEntries(); + + // custom code here + TH1F *fHistSSDModule = new TH1F("fHistSSDHitsModule", + "SSD Hits Module;SDD Module Number;N_{HITS}", + 1698,499.5,2197.5); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDModule, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 0, !expert, image); + fSSDhHTask += 1; + TH1F *fHistSSDGlobalX = new TH1F("fHistSSDHitsGlobalX", + "SSD Hits Global X;x [cm];Entries", + 1000,-50.,50.); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalX, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 1, !expert, image); + fSSDhHTask += 1; + TH1F *fHistSSDGlobalY = new TH1F("fHistSSDHitsGlobalY", + "SSD Hits Global Y;y [cm];Entries", + 1000,-50.,50.); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalY, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 2, !expert, image); + fSSDhHTask += 1; + TH1F *fHistSSDGlobalZ = new TH1F("fHistSSDHitsGlobalZ", + "SSD Hits Global Z ;z [cm];Entries", + 1000,-60.,60.); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalZ, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 3, !expert, image); + fSSDhHTask += 1; + TH1F *fHistSSDLocalX = new TH1F("fHistSSDHitsLocalX", + "SSD Hits Local X;x [cm];Entries", + 1000,-4.,4.); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalX, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 4, !expert, image); + fSSDhHTask += 1; + TH1F *fHistSSDLocalY = new TH1F("fHistSSDHitsLocalY", + "SSD Hits Local Y;y [cm];Entries", + 1000,-0.1,0.1); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalY, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 5, !expert, image); + fSSDhHTask += 1; + TH1F *fHistSSDLocalZ = new TH1F("fHistSSDHitsLocalZ", + "SSD Hits Local Z;z [cm];Entries", + 1000,-4.,4.); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalZ, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 6, !expert, image); + fSSDhHTask += 1; + TH1F *fHistSSDIonization = new TH1F("fHistSSDHitsIonization", + "SSD Hits Ionization;log(dE/dx) [KeV];N_{Hits}", + 100,-7,-2); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDIonization, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 7, !expert, image); + fSSDhHTask += 1; + TH2F *fHistSSDGlobalXY = new TH2F("fHistSSDHitsGlobalXY", + "SSD Hits Global XY;x [cm];y [cm]", + 1000,-50.,50., + 1000,-50.,50.); + rv = fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalXY, + fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 8, !expert, image); + fSSDhHTask += 1; + + AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD Hits histograms booked\n",fSSDhHTask)); + return rv ; +} + + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::MakeHits(TTree *hits) { + // Fill QA for HITS - SSD - + Int_t rv = 0 ; + + AliITS *fITS = (AliITS*)gAlice->GetModule("ITS"); + fITS->SetTreeAddress(); + Int_t nmodules; + fITS->InitModules(-1,nmodules); + fITS->FillModules(hits,0); + for(Int_t iModule = 500; iModule < 2198; iModule++) { + AliITSmodule *module = fITS->GetModule(iModule); + TObjArray *arrHits = module->GetHits(); + Int_t nhits = arrHits->GetEntriesFast(); + if(nhits != 0) + AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Hits: %d",iModule,nhits)); + for (Int_t iHit = 0; iHit < nhits; iHit++) { + AliITShit *hit = (AliITShit*) arrHits->At(iHit); + + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 0)->Fill(iModule); + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 1)->Fill(hit->GetXG()); + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 2)->Fill(hit->GetYG()); + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 3)->Fill(hit->GetZG()); + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 4)->Fill(hit->GetXL()); + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 5)->Fill(hit->GetYL()); + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 6)->Fill(hit->GetZL()); + if(hit->GetIonization()) + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 7)->Fill(TMath::Log10(hit->GetIonization())); + fAliITSQADataMakerSim->GetHitsData(fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()] + 8)->Fill(hit->GetXG(),hit->GetYG()); + }//hit loop + }//module loop + return rv ; +} + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::GetOffset(AliQAv1::TASKINDEX_t task){ + // Returns histogram offset according to the specified task + Int_t offset=0; + if( task == AliQAv1::kHITS){ + offset=fGenOffsetH[fAliITSQADataMakerSim->GetEventSpecie()]; + } + else if( task == AliQAv1::kSDIGITS) { + offset=fGenOffsetS[fAliITSQADataMakerSim->GetEventSpecie()]; + } + else if( task == AliQAv1::kDIGITS) { + offset=fGenOffsetD[fAliITSQADataMakerSim->GetEventSpecie()]; + } + else { + AliInfo("No task has been selected. TaskHisto set to zero.\n"); + } + + return offset; +} + + +//____________________________________________________________________________ +void AliITSQASSDDataMakerSim::SetOffset(AliQAv1::TASKINDEX_t task, Int_t offset,Int_t specie ){ + // Returns histogram offset according to the specified task + if( task == AliQAv1::kHITS){ + fGenOffsetH[specie] = offset; + } + else if( task == AliQAv1::kSDIGITS) { + fGenOffsetS[specie] = offset; + } + else if( task == AliQAv1::kDIGITS) { + fGenOffsetD[specie] = offset; + } + else { + AliInfo("No task has been selected. TaskHisto set to zero.\n"); + } +} + +//____________________________________________________________________________ +Int_t AliITSQASSDDataMakerSim::GetTaskHisto(AliQAv1::TASKINDEX_t task) { + // Returns the number of booked histograms for the selected task + Int_t histotot=0; + if( task == AliQAv1::kHITS) { + histotot=fSSDhHTask ; + } + else if( task == AliQAv1::kSDIGITS) { + histotot=fSSDhSTask; + } + else if( task == AliQAv1::kDIGITS) { + histotot=fSSDhDTask ; + } + else { + AliInfo("No task has been selected. TaskHisto set to zero.\n"); + } + return histotot; + +}