ROOT logo
/**************************************************************************
* 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$

//-----------------------------------------------------------------------------
/// \class AliMUONTriggerDCSSubprocessor
///
/// A subprocessor to read Trigger DCS values for one run
///
/// It simply creates a copy of the dcsAliasMap w/o information
/// from the MUON TRG, and dumps this copy into the CDB
///
/// \author Diego Stocco, Subatech
//-----------------------------------------------------------------------------

#include "AliMUONTriggerDCSSubprocessor.h"
#include "AliMUONPreprocessor.h"

#include "AliMpDEIterator.h"
#include "AliMpDEManager.h"
#include "AliMpConstants.h"
#include "AliMpDCSNamer.h"

#include "AliCDBMetaData.h"
#include "AliLog.h"
#include "AliDCSValue.h"

#include "Riostream.h"
#include "TMap.h"
#include "TObjString.h"

/// \cond CLASSIMP
ClassImp(AliMUONTriggerDCSSubprocessor)
/// \endcond

//_____________________________________________________________________________
AliMUONTriggerDCSSubprocessor::AliMUONTriggerDCSSubprocessor(AliMUONPreprocessor* master)
: AliMUONVSubprocessor(master,
                       "TriggerDCS",
                       "Get MUON Trigger HV and Current values from DCS")
{
  /// ctor
}

//_____________________________________________________________________________
AliMUONTriggerDCSSubprocessor::~AliMUONTriggerDCSSubprocessor()
{
  /// dtor
}

//_____________________________________________________________________________
UInt_t
AliMUONTriggerDCSSubprocessor::Process(TMap* dcsAliasMap)
{
  /// Make another alias map from dcsAliasMap, considering only MUON TRK aliases.

  TMap dcsMap;
  dcsMap.SetOwner(kTRUE);
  
  AliMpDCSNamer dcsMapNamer("TRIGGER");

  AliMpDEIterator deIt;

  deIt.First();
  
  TObjArray aliases;
  aliases.SetOwner(kTRUE);
  
  // we first generate a list of expected MTR DCS aliases we'll then look for
  
  while ( !deIt.IsDone() )
  {
    Int_t detElemId = deIt.CurrentDEId();
    
    if ( AliMpDEManager::GetStationType(detElemId) == AliMp::kStationTrigger) {

      for(Int_t iMeas=0; iMeas<AliMpDCSNamer::kNDCSMeas; iMeas++){
	aliases.Add(new TObjString(dcsMapNamer.DCSAliasName(detElemId, 0, iMeas)));
      }

    }

    deIt.Next();
  }

  TIter next(&aliases);
  TObjString* alias;
  Bool_t kNoAliases(kTRUE);
  Int_t aliasNotFound(0);
  Int_t valueNotFound(0);
  
  while ( ( alias = static_cast<TObjString*>(next()) ) ) 
  {
    TString aliasName(alias->String());
    TPair* dcsMapPair = static_cast<TPair*>(dcsAliasMap->FindObject(aliasName.Data()));
    if (!dcsMapPair)
    {
      ++aliasNotFound;
    }
    else
    {
      kNoAliases = kFALSE;
      if (!dcsMapPair->Value())
      {
        ++valueNotFound;
      }
      else
      {
	TObjArray* values = static_cast<TObjArray*>(dcsMapPair->Value()->Clone());
	RemoveValuesOutsideRun(values);

        dcsMap.Add(new TObjString(aliasName.Data()),values);
      }
    }
  }
  
  if ( kNoAliases ) 
  {
    Master()->Log("ERROR : no DCS values found");
    return 1;
  }
  
  if ( aliasNotFound ) 
  {
    Master()->Log(Form("WARNING %d aliases not found",aliasNotFound));
  }
  
  if ( valueNotFound )
  {
    Master()->Log(Form("WARNING %d values not found",valueNotFound));
  }
  
  Master()->Log("INFO Aliases successfully read in");
  
  AliCDBMetaData metaData;
  metaData.SetBeamPeriod(0);
  metaData.SetResponsible("MUON TRG");
  metaData.SetComment("Computed by AliMUONTriggerDCSSubprocessor $Id$");
  
  Bool_t validToInfinity(kFALSE);
  
  Bool_t result = Master()->Store("Calib","TriggerDCS",&dcsMap,&metaData,0,validToInfinity);
  
  return ( result != kTRUE); // return 0 if everything is ok
}

 AliMUONTriggerDCSSubprocessor.cxx:1
 AliMUONTriggerDCSSubprocessor.cxx:2
 AliMUONTriggerDCSSubprocessor.cxx:3
 AliMUONTriggerDCSSubprocessor.cxx:4
 AliMUONTriggerDCSSubprocessor.cxx:5
 AliMUONTriggerDCSSubprocessor.cxx:6
 AliMUONTriggerDCSSubprocessor.cxx:7
 AliMUONTriggerDCSSubprocessor.cxx:8
 AliMUONTriggerDCSSubprocessor.cxx:9
 AliMUONTriggerDCSSubprocessor.cxx:10
 AliMUONTriggerDCSSubprocessor.cxx:11
 AliMUONTriggerDCSSubprocessor.cxx:12
 AliMUONTriggerDCSSubprocessor.cxx:13
 AliMUONTriggerDCSSubprocessor.cxx:14
 AliMUONTriggerDCSSubprocessor.cxx:15
 AliMUONTriggerDCSSubprocessor.cxx:16
 AliMUONTriggerDCSSubprocessor.cxx:17
 AliMUONTriggerDCSSubprocessor.cxx:18
 AliMUONTriggerDCSSubprocessor.cxx:19
 AliMUONTriggerDCSSubprocessor.cxx:20
 AliMUONTriggerDCSSubprocessor.cxx:21
 AliMUONTriggerDCSSubprocessor.cxx:22
 AliMUONTriggerDCSSubprocessor.cxx:23
 AliMUONTriggerDCSSubprocessor.cxx:24
 AliMUONTriggerDCSSubprocessor.cxx:25
 AliMUONTriggerDCSSubprocessor.cxx:26
 AliMUONTriggerDCSSubprocessor.cxx:27
 AliMUONTriggerDCSSubprocessor.cxx:28
 AliMUONTriggerDCSSubprocessor.cxx:29
 AliMUONTriggerDCSSubprocessor.cxx:30
 AliMUONTriggerDCSSubprocessor.cxx:31
 AliMUONTriggerDCSSubprocessor.cxx:32
 AliMUONTriggerDCSSubprocessor.cxx:33
 AliMUONTriggerDCSSubprocessor.cxx:34
 AliMUONTriggerDCSSubprocessor.cxx:35
 AliMUONTriggerDCSSubprocessor.cxx:36
 AliMUONTriggerDCSSubprocessor.cxx:37
 AliMUONTriggerDCSSubprocessor.cxx:38
 AliMUONTriggerDCSSubprocessor.cxx:39
 AliMUONTriggerDCSSubprocessor.cxx:40
 AliMUONTriggerDCSSubprocessor.cxx:41
 AliMUONTriggerDCSSubprocessor.cxx:42
 AliMUONTriggerDCSSubprocessor.cxx:43
 AliMUONTriggerDCSSubprocessor.cxx:44
 AliMUONTriggerDCSSubprocessor.cxx:45
 AliMUONTriggerDCSSubprocessor.cxx:46
 AliMUONTriggerDCSSubprocessor.cxx:47
 AliMUONTriggerDCSSubprocessor.cxx:48
 AliMUONTriggerDCSSubprocessor.cxx:49
 AliMUONTriggerDCSSubprocessor.cxx:50
 AliMUONTriggerDCSSubprocessor.cxx:51
 AliMUONTriggerDCSSubprocessor.cxx:52
 AliMUONTriggerDCSSubprocessor.cxx:53
 AliMUONTriggerDCSSubprocessor.cxx:54
 AliMUONTriggerDCSSubprocessor.cxx:55
 AliMUONTriggerDCSSubprocessor.cxx:56
 AliMUONTriggerDCSSubprocessor.cxx:57
 AliMUONTriggerDCSSubprocessor.cxx:58
 AliMUONTriggerDCSSubprocessor.cxx:59
 AliMUONTriggerDCSSubprocessor.cxx:60
 AliMUONTriggerDCSSubprocessor.cxx:61
 AliMUONTriggerDCSSubprocessor.cxx:62
 AliMUONTriggerDCSSubprocessor.cxx:63
 AliMUONTriggerDCSSubprocessor.cxx:64
 AliMUONTriggerDCSSubprocessor.cxx:65
 AliMUONTriggerDCSSubprocessor.cxx:66
 AliMUONTriggerDCSSubprocessor.cxx:67
 AliMUONTriggerDCSSubprocessor.cxx:68
 AliMUONTriggerDCSSubprocessor.cxx:69
 AliMUONTriggerDCSSubprocessor.cxx:70
 AliMUONTriggerDCSSubprocessor.cxx:71
 AliMUONTriggerDCSSubprocessor.cxx:72
 AliMUONTriggerDCSSubprocessor.cxx:73
 AliMUONTriggerDCSSubprocessor.cxx:74
 AliMUONTriggerDCSSubprocessor.cxx:75
 AliMUONTriggerDCSSubprocessor.cxx:76
 AliMUONTriggerDCSSubprocessor.cxx:77
 AliMUONTriggerDCSSubprocessor.cxx:78
 AliMUONTriggerDCSSubprocessor.cxx:79
 AliMUONTriggerDCSSubprocessor.cxx:80
 AliMUONTriggerDCSSubprocessor.cxx:81
 AliMUONTriggerDCSSubprocessor.cxx:82
 AliMUONTriggerDCSSubprocessor.cxx:83
 AliMUONTriggerDCSSubprocessor.cxx:84
 AliMUONTriggerDCSSubprocessor.cxx:85
 AliMUONTriggerDCSSubprocessor.cxx:86
 AliMUONTriggerDCSSubprocessor.cxx:87
 AliMUONTriggerDCSSubprocessor.cxx:88
 AliMUONTriggerDCSSubprocessor.cxx:89
 AliMUONTriggerDCSSubprocessor.cxx:90
 AliMUONTriggerDCSSubprocessor.cxx:91
 AliMUONTriggerDCSSubprocessor.cxx:92
 AliMUONTriggerDCSSubprocessor.cxx:93
 AliMUONTriggerDCSSubprocessor.cxx:94
 AliMUONTriggerDCSSubprocessor.cxx:95
 AliMUONTriggerDCSSubprocessor.cxx:96
 AliMUONTriggerDCSSubprocessor.cxx:97
 AliMUONTriggerDCSSubprocessor.cxx:98
 AliMUONTriggerDCSSubprocessor.cxx:99
 AliMUONTriggerDCSSubprocessor.cxx:100
 AliMUONTriggerDCSSubprocessor.cxx:101
 AliMUONTriggerDCSSubprocessor.cxx:102
 AliMUONTriggerDCSSubprocessor.cxx:103
 AliMUONTriggerDCSSubprocessor.cxx:104
 AliMUONTriggerDCSSubprocessor.cxx:105
 AliMUONTriggerDCSSubprocessor.cxx:106
 AliMUONTriggerDCSSubprocessor.cxx:107
 AliMUONTriggerDCSSubprocessor.cxx:108
 AliMUONTriggerDCSSubprocessor.cxx:109
 AliMUONTriggerDCSSubprocessor.cxx:110
 AliMUONTriggerDCSSubprocessor.cxx:111
 AliMUONTriggerDCSSubprocessor.cxx:112
 AliMUONTriggerDCSSubprocessor.cxx:113
 AliMUONTriggerDCSSubprocessor.cxx:114
 AliMUONTriggerDCSSubprocessor.cxx:115
 AliMUONTriggerDCSSubprocessor.cxx:116
 AliMUONTriggerDCSSubprocessor.cxx:117
 AliMUONTriggerDCSSubprocessor.cxx:118
 AliMUONTriggerDCSSubprocessor.cxx:119
 AliMUONTriggerDCSSubprocessor.cxx:120
 AliMUONTriggerDCSSubprocessor.cxx:121
 AliMUONTriggerDCSSubprocessor.cxx:122
 AliMUONTriggerDCSSubprocessor.cxx:123
 AliMUONTriggerDCSSubprocessor.cxx:124
 AliMUONTriggerDCSSubprocessor.cxx:125
 AliMUONTriggerDCSSubprocessor.cxx:126
 AliMUONTriggerDCSSubprocessor.cxx:127
 AliMUONTriggerDCSSubprocessor.cxx:128
 AliMUONTriggerDCSSubprocessor.cxx:129
 AliMUONTriggerDCSSubprocessor.cxx:130
 AliMUONTriggerDCSSubprocessor.cxx:131
 AliMUONTriggerDCSSubprocessor.cxx:132
 AliMUONTriggerDCSSubprocessor.cxx:133
 AliMUONTriggerDCSSubprocessor.cxx:134
 AliMUONTriggerDCSSubprocessor.cxx:135
 AliMUONTriggerDCSSubprocessor.cxx:136
 AliMUONTriggerDCSSubprocessor.cxx:137
 AliMUONTriggerDCSSubprocessor.cxx:138
 AliMUONTriggerDCSSubprocessor.cxx:139
 AliMUONTriggerDCSSubprocessor.cxx:140
 AliMUONTriggerDCSSubprocessor.cxx:141
 AliMUONTriggerDCSSubprocessor.cxx:142
 AliMUONTriggerDCSSubprocessor.cxx:143
 AliMUONTriggerDCSSubprocessor.cxx:144
 AliMUONTriggerDCSSubprocessor.cxx:145
 AliMUONTriggerDCSSubprocessor.cxx:146
 AliMUONTriggerDCSSubprocessor.cxx:147
 AliMUONTriggerDCSSubprocessor.cxx:148
 AliMUONTriggerDCSSubprocessor.cxx:149
 AliMUONTriggerDCSSubprocessor.cxx:150
 AliMUONTriggerDCSSubprocessor.cxx:151
 AliMUONTriggerDCSSubprocessor.cxx:152
 AliMUONTriggerDCSSubprocessor.cxx:153
 AliMUONTriggerDCSSubprocessor.cxx:154
 AliMUONTriggerDCSSubprocessor.cxx:155
 AliMUONTriggerDCSSubprocessor.cxx:156
 AliMUONTriggerDCSSubprocessor.cxx:157
 AliMUONTriggerDCSSubprocessor.cxx:158
 AliMUONTriggerDCSSubprocessor.cxx:159