/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ /* $Id: AliCorrQADataMakerRec.cxx 27570 2008-07-24 21:49:27Z cvetan $ */ /* Produces the data needed to calculate the quality assurance. All data must be mergeable objects. Y. Schutz CERN July 2007 */ // --- ROOT system --- #include #include #include #include #include #include #include #include // --- Standard library --- // --- AliRoot header files --- #include "AliLog.h" #include "AliCorrQADataMakerRec.h" #include "AliQAChecker.h" ClassImp(AliCorrQADataMakerRec) //____________________________________________________________________________ AliCorrQADataMakerRec::AliCorrQADataMakerRec(AliQADataMaker ** qadm ) : AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kCORR), "Corr Quality Assurance Data Maker"), fMaxRawVar(0), fqadm(qadm), fVarvalue(NULL) { // ctor fCorrNt = new TNtupleD *[AliRecoParam::kNSpecies] ; for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) fCorrNt[specie] = NULL ; } //____________________________________________________________________________ AliCorrQADataMakerRec::AliCorrQADataMakerRec(const AliCorrQADataMakerRec& qadm) : AliQADataMakerRec(), fMaxRawVar(qadm.fMaxRawVar), fqadm(qadm.fqadm), fVarvalue(NULL) { //copy ctor SetName((const char*)qadm.GetName()) ; SetTitle((const char*)qadm.GetTitle()); if ( fMaxRawVar > 0 ) fVarvalue = new Double_t[fMaxRawVar] ; fCorrNt = new TNtupleD *[AliRecoParam::kNSpecies] ; for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) fCorrNt[specie] = qadm.fCorrNt[specie] ; } //__________________________________________________________________ AliCorrQADataMakerRec& AliCorrQADataMakerRec::operator = (const AliCorrQADataMakerRec& qadm ) { // assign operator. this->~AliCorrQADataMakerRec(); new(this) AliCorrQADataMakerRec(qadm); return *this; } //____________________________________________________________________________ AliCorrQADataMakerRec::~AliCorrQADataMakerRec() { // dtor only destroy the ntuple if ( fCorrNt ) { // for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) { // if ( fCorrNt[specie] != NULL ) // delete fCorrNt[specie] ; // } delete[] fCorrNt ; fCorrNt = 0x0; } if ( fMaxRawVar > 0 ) delete [] fVarvalue ; } //____________________________________________________________________________ void AliCorrQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** /*list*/) { //Detector specific actions at end of cycle // do the QA checking if (task == AliQAv1::kRAWS) { AliQAChecker::Instance()->Run(AliQAv1::kCORR, task, fCorrNt) ; } } //____________________________________________________________________________ void AliCorrQADataMakerRec::InitESDs() { //Create histograms to controll ESD AliInfo("TO BE IMPLEMENTED") ; } //____________________________________________________________________________ void AliCorrQADataMakerRec::InitRaws() { // createa ntuple taking all the parameters declared by detectors if (fCorrNt && fCorrNt[AliRecoParam::AConvert(fEventSpecie)]) return ; if (!fCorrNt) { fCorrNt = new TNtupleD *[AliRecoParam::kNSpecies] ; ; for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) fCorrNt[specie] = NULL ; } if ( fRawsQAList ) { delete[] fRawsQAList ; // not needed for the time being fRawsQAList = NULL ; } TString varlist("") ; for ( Int_t detIndex = 0 ; detIndex < AliQAv1::kNDET ; detIndex++ ) { AliQADataMaker * qadm = fqadm[detIndex] ; if ( ! qadm ) continue ; TList * list = qadm->GetParameterList() ; if (list) { TIter next(list) ; TParameter * p ; while ( (p = static_cast*>(next()) ) ) { varlist.Append(p->GetName()) ; varlist.Append(":") ; fMaxRawVar++ ; } } } varlist = varlist.Strip(TString::kTrailing, ':') ; if (fMaxRawVar == 0) { AliWarning("NTUPLE not created") ; } else { char * name = Form("%s_%s", AliQAv1::GetQACorrName(), AliRecoParam::GetEventSpecieName(fEventSpecie)) ; fCorrNt[AliRecoParam::AConvert(fEventSpecie)] = new TNtupleD(name, "Raws data correlation among detectors", varlist.Data()) ; fVarvalue = new Double_t[fMaxRawVar] ; } } //____________________________________________________________________________ void AliCorrQADataMakerRec::InitRecPoints() { // create Reconstructed Points histograms in RecPoints subdir AliInfo("TO BE IMPLEMENTED") ; } //____________________________________________________________________________ void AliCorrQADataMakerRec::InitRecoParams() { // Get the recoparam form the OCDB for every detector involved in CORR AliInfo("TO BE IMPLEMENTED") ; } //____________________________________________________________________________ void AliCorrQADataMakerRec::MakeESDs(AliESDEvent * /*esd*/) { // make QA data from ESDs AliInfo("TO BE IMPLEMENTED") ; } //____________________________________________________________________________ void AliCorrQADataMakerRec::MakeRaws(AliRawReader *) { //Fill prepared histograms with Raw digit properties if ( !fCorrNt || ! fCorrNt[AliRecoParam::AConvert(fEventSpecie)]) InitRaws() ; if ( fMaxRawVar > 0 ) { Int_t index = 0 ; for ( Int_t detIndex = 0 ; detIndex < AliQAv1::kNDET ; detIndex++ ) { AliQADataMaker * qadm = fqadm[detIndex] ; if ( ! qadm ) continue ; TList * list = qadm->GetParameterList() ; if (list) { TIter next(list) ; TParameter * p ; while ( (p = static_cast*>(next()) ) ) { if (index >= fMaxRawVar) { AliError(Form("Variables list size exceeded (%d) !",index)); break; } fVarvalue[index] = p->GetVal() ; index++ ; } } } static_cast(fCorrNt[AliRecoParam::AConvert(fEventSpecie)])->Fill(fVarvalue); } } //____________________________________________________________________________ void AliCorrQADataMakerRec::MakeRecPoints(TTree * /*clustersTree*/) { AliInfo("TO BE IMPLEMENTED") ; } //____________________________________________________________________________ void AliCorrQADataMakerRec::StartOfDetectorCycle() { //Detector specific actions at start of cycle }