LCOV - code coverage report
Current view: top level - MUON/MUONshuttle - AliMUONPreprocessor.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 60 1.7 %
Date: 2016-06-14 17:26:59 Functions: 1 12 8.3 %

          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             : // $Id$
      17             : 
      18             : #include "AliMUONPreprocessor.h"
      19             : 
      20             : #include "AliCDBEntry.h"
      21             : #include "AliLog.h"
      22             : #include "AliMUONGMSSubprocessor.h"
      23             : #include "AliMUONHVSubprocessor.h"
      24             : #include "AliMUONPedestalSubprocessor.h"
      25             : #include "AliMpCDB.h"
      26             : #include "AliMpDDLStore.h"
      27             : #include "AliMpDataMap.h"
      28             : #include "AliMpDataStreams.h"
      29             : #include "AliMpSegmentation.h"
      30             : #include "AliShuttleInterface.h"
      31             : #include "Riostream.h"
      32             : #include "TObjArray.h"
      33             : 
      34             : //-----------------------------------------------------------------------------
      35             : /// \class AliMUONPreprocessor
      36             : ///
      37             : /// Shuttle preprocessor for MUON subsystems (TRK and TRG)
      38             : /// 
      39             : /// It's simply a manager class that deals with a list of sub-tasks 
      40             : /// (of type AliMUONVSubprocessor).
      41             : ///
      42             : /// \author Laurent Aphecetche
      43             : //-----------------------------------------------------------------------------
      44             : 
      45             : /// \cond CLASSIMP
      46          12 : ClassImp(AliMUONPreprocessor)
      47             : /// \endcond
      48             : 
      49             : //_____________________________________________________________________________
      50             : AliMUONPreprocessor::AliMUONPreprocessor(const char* detName, AliShuttleInterface* shuttle)
      51           0 : : AliPreprocessor(detName, shuttle),
      52           0 :   fIsValid(kFALSE),
      53           0 :   fIsApplicable(kTRUE),
      54           0 :   fSubprocessors(new TObjArray()),
      55           0 :   fProcessDCS(kFALSE)
      56           0 : {
      57             :   /// ctor
      58           0 : }
      59             : 
      60             : //_____________________________________________________________________________
      61             : AliMUONPreprocessor::~AliMUONPreprocessor()
      62           0 : {
      63             :   /// dtor
      64           0 :   delete fSubprocessors;
      65           0 : }
      66             : 
      67             : //_____________________________________________________________________________
      68             : void
      69             : AliMUONPreprocessor::ClearSubprocessors()
      70             : {
      71             :   /// Empty our subprocessor list
      72           0 :   fSubprocessors->Clear();
      73           0 :   fProcessDCS = kFALSE;
      74           0 :   fIsValid = kFALSE;
      75           0 :   fIsApplicable = kTRUE;
      76           0 : }
      77             : 
      78             : //_____________________________________________________________________________
      79             : void
      80             : AliMUONPreprocessor::Add(AliMUONVSubprocessor* sub, Bool_t processDCS)
      81             : {
      82             :   /// Add a subprocessor to our list of workers
      83           0 :   fSubprocessors->Add(sub);
      84           0 :   if ( processDCS == kTRUE ) fProcessDCS = processDCS;
      85           0 : }
      86             : 
      87             : //_____________________________________________________________________________
      88             : void
      89             : AliMUONPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
      90             : {
      91             :   /// Load mapping and initialize subtasks  
      92             : 
      93             :   // Delete previous mapping
      94           0 :   AliMpCDB::UnloadAll();
      95             :   
      96           0 :   if ( ! IsApplicable() ) {
      97           0 :     Log(Form("WARNING-RunType=%s is not one I should handle.",GetRunType()));
      98           0 :     return;
      99             :   }   
     100             :   
     101             :   // Load mapping from CDB for this run
     102           0 :   AliCDBEntry* cdbEntry = GetFromOCDB("Calib", "MappingData");
     103           0 :   if (!cdbEntry)
     104             :   {
     105           0 :     Log("Could not get MappingData from OCDB !");
     106           0 :     fIsValid = kFALSE;
     107           0 :   }
     108             :   else
     109             :   {
     110           0 :     AliMpDataMap* dataMap = dynamic_cast<AliMpDataMap*>(cdbEntry->GetObject());
     111           0 :     if (!dataMap)
     112             :     {
     113           0 :       Log("DataMap is not of the expected type. That is bad...");
     114           0 :       fIsValid = kFALSE;
     115           0 :     }
     116             :     else
     117             :     {
     118           0 :       AliMpDataStreams dataStreams(dataMap);
     119           0 :       AliMpDDLStore::ReadData(dataStreams);
     120           0 :     }
     121             :   }
     122             :   
     123             :   Int_t nok(0);
     124             : 
     125           0 :   if (IsValid())
     126             :   {
     127             :     // loop over subtasks and initialize them
     128           0 :     for ( Int_t i = 0; i <= fSubprocessors->GetLast(); ++i )
     129             :     {
     130           0 :       Bool_t ok = Subprocessor(i)->Initialize(run,startTime,endTime);
     131           0 :       if (ok) ++nok;
     132             :     }
     133           0 :     if (nok !=  fSubprocessors->GetLast()+1) fIsValid = kFALSE;
     134             :   }
     135           0 :   Log(Form("Initialize was %s",( IsValid() ? "fine" : "NOT OK")));
     136           0 : }
     137             : 
     138             : //_____________________________________________________________________________
     139             : UInt_t
     140             : AliMUONPreprocessor::Process(TMap* dcsAliasMap)
     141             : {
     142             :   /// loop over subtasks to make them work
     143             :   
     144           0 :   if (!IsValid())
     145             :   {
     146           0 :     Log("Will not run as not properly initialized");
     147           0 :     return 99;
     148             :   }
     149             :   
     150           0 :   if (!IsApplicable())
     151             :   {
     152           0 :     Log("Nothing to do for me");
     153           0 :     return 0;
     154             :   }
     155             :   
     156             :   UInt_t rv(0);
     157             :   
     158           0 :   for ( Int_t i = 0; i <= fSubprocessors->GetLast(); ++i )
     159             :   {
     160           0 :     rv += Subprocessor(i)->Process(dcsAliasMap);
     161             :   }
     162             :   
     163             :   return rv;
     164           0 : }
     165             : 
     166             : //_____________________________________________________________________________
     167             : void
     168             : AliMUONPreprocessor::Print(Option_t* opt) const
     169             : {
     170             :   /// output to screen
     171           0 :   cout << "<AliMUONPreprocessor> subprocessors :" << endl;
     172           0 :   for ( Int_t i=0; i <= fSubprocessors->GetLast(); ++i )
     173             :   {
     174           0 :     Subprocessor(i)->Print(opt);
     175             :   }
     176           0 : }
     177             : 
     178             : //_____________________________________________________________________________
     179             : AliMUONVSubprocessor*
     180             : AliMUONPreprocessor::Subprocessor(Int_t i) const
     181             : {
     182             :   /// return i-th subprocessor
     183           0 :   if ( i >= 0 && i <= fSubprocessors->GetLast() )
     184             :   {
     185           0 :     return static_cast<AliMUONVSubprocessor*>(fSubprocessors->At(i));
     186             :   }
     187           0 :   return 0x0;
     188           0 : }

Generated by: LCOV version 1.11