+void AliQADataMakerRec::InitRecoParams()
+{
+ // Get the recoparam form the OCDB
+ if (!fRecoParam) {
+ AliDebug(AliQAv1::GetQADebugLevel(), Form("Loading reconstruction parameter objects for detector %s", GetName()));
+ AliCDBPath path(GetName(),"Calib","RecoParam");
+ AliCDBEntry *entry=AliCDBManager::Instance()->Get(path.GetPath());
+ if(!entry) {
+ fRecoParam = NULL ;
+ AliDebug(AliQAv1::GetQADebugLevel(), Form("Couldn't find RecoParam entry in OCDB for detector %s",GetName()));
+ }
+ else {
+ TObject * recoParamObj = entry->GetObject() ;
+ if ( strcmp(recoParamObj->ClassName(), "TObjArray") == 0 ) {
+ // The detector has only one set of reco parameters
+ AliDebug(AliQAv1::GetQADebugLevel(), Form("Array of reconstruction parameters found for detector %s",GetName()));
+ TObjArray *recoParamArray = static_cast<TObjArray*>(recoParamObj) ;
+ for (Int_t iRP=0; iRP<recoParamArray->GetEntriesFast(); iRP++) {
+ fRecoParam = static_cast<AliDetectorRecoParam*>(recoParamArray->At(iRP)) ;
+ if (!fRecoParam)
+ break ;
+ else if (fRecoParam->IsDefault())
+ break ;
+ }
+ }
+ else if (recoParamObj->InheritsFrom("AliDetectorRecoParam")) {
+ // The detector has only one set of reco parameters
+ // Registering it in AliRecoParam
+ AliDebug(AliQAv1::GetQADebugLevel(), Form("Single set of reconstruction parameters found for detector %s",GetName()));
+ fRecoParam = static_cast<AliDetectorRecoParam*>(recoParamObj) ;
+ static_cast<AliDetectorRecoParam*>(recoParamObj)->SetAsDefault();
+ } else {
+ AliError(Form("No valid RecoParam object found in the OCDB for detector %s",GetName()));
+ }
+ }
+ }
+}
+
+//____________________________________________________________________________
+void AliQADataMakerRec::ResetDetector(AliQAv1::TASKINDEX_t task)
+{
+ // default reset that resets all the QA objects.
+ // to be overloaded by detectors, if necessary
+
+ TObjArray ** list = NULL ;
+ if ( task == AliQAv1::kRAWS ) {
+ list = fRawsQAList ;
+ } else if ( task == AliQAv1::kDIGITSR ) {
+ list = fDigitsQAList ;
+ } else if ( task == AliQAv1::kRECPOINTS ) {
+ list = fRecPointsQAList ;
+ } else if ( task == AliQAv1::kESDS ) {
+ list = fESDsQAList ;
+ }
+ //list was not initialized, skip
+ if (!list)
+ return ;
+
+ for (int spec = 0; spec < AliRecoParam::kNSpecies; spec++) {
+ if (!AliQAv1::Instance()->IsEventSpecieSet(AliRecoParam::ConvertIndex(spec)))
+ continue;
+ TIter next(list[spec]) ;
+ TH1 * histo = NULL ;
+ while ( (histo = dynamic_cast<TH1*> (next())) ) {
+ histo->Reset("ICE") ;
+ histo->ResetStats() ;
+ }
+ }
+}
+
+//____________________________________________________________________________
+void AliQADataMakerRec::StartOfCycle(Int_t run)
+{
+ // Finishes a cycle of QA for all the tasks
+ Bool_t samecycle = kFALSE ;
+ StartOfCycle(AliQAv1::kRAWS, run, samecycle) ;
+ samecycle = kTRUE ;
+ StartOfCycle(AliQAv1::kDIGITSR, run, samecycle) ;
+ StartOfCycle(AliQAv1::kRECPOINTS, run, samecycle) ;
+ StartOfCycle(AliQAv1::kESDS, run, samecycle) ;
+}
+
+//____________________________________________________________________________
+void AliQADataMakerRec::StartOfCycle(AliQAv1::TASKINDEX_t task, Int_t run, const Bool_t sameCycle)