Skip to content
Snippets Groups Projects
Commit 6a7480d4 authored by Edward Moyse's avatar Edward Moyse
Browse files

Merge branch 'LArObsoleteCalibAlgsRemoval1' into 'master'

remove LArPedestalBuilder and LArAutoCorrBuilder. Superseeded by LArPedestalAutoCorrBuilder

See merge request !46681
parents acb1d5b0 b5814a64
7 merge requests!69091Fix correlated smearing bug in JER in JetUncertainties in 22.0,!58791DataQualityConfigurations: Modify L1Calo config for web display,!51674Fixing hotSpotInHIST for Run3 HIST,!50012RecExConfig: Adjust log message levels from GetRunNumber and GetLBNumber,!46784MuonCondInterface: Enable thread-safety checking.,!46776Updated LArMonitoring config file for WD to match new files produced using MT,!46681remove LArPedestalBuilder and LArAutoCorrBuilder. Superseeded by LArPedestalAutoCorrBuilder
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
//Dear emacs, this is -*-c++-*-
#ifndef LARAUTOCORRBUILDER_H
#define LARAUTOCORRBUILDER_H
/********************************************************************
NAME: LArAutoCorrBuilder.h
PACKAGE: offline/LArCalorimeter/LArCalibUtils
AUTHORS: R. Lafaye
CREATED: Jun. 12, 2008 from LArAutoCorrMaker
PURPOSE: Get the autocorrelation for each cell from LArAccumulatedDigits
at each gain and records them in TDS
In fact only the last (m_nsamples-1) elements of the
first line (or column) of autocorrelation matrix are
recovered and stored in TDS, for these reasons:
- symetry of autocorrelation matrix
- equivalence of autocorrelation elements:
B(n,n+i)\eq B(m,m+i) (eg B12 \eq B23).
HISTORY:
Walter Lampl, 26 Aug 2009:
Derive from LArPedestalBuilder
********************************************************************/
// Include files
#include "GaudiKernel/Algorithm.h"
#include "StoreGate/StoreGateSvc.h"
#include "LArCalibUtils/LArPedestalBuilder.h"
#include "LArRawEvent/LArAccumulatedDigitContainer.h"
#include "LArRawConditions/LArAutoCorrComplete.h"
//-----------------------------------------------------------------------
class LArAutoCorrBuilder : public LArPedestalBuilder
//-----------------------------------------------------------------------
{
public:
// Constructor
LArAutoCorrBuilder(const std::string & name, ISvcLocator * pSvcLocator);
// Destructor
~LArAutoCorrBuilder();
// Algorithm initialization
//StatusCode initialize(); Inherited from LArPedestalBuilder
// Algorithm execution
//StatusCode execute(); Inherited from LArPedestal Builder
// Algorithm finalization
StatusCode stop();
StatusCode finalize(){return StatusCode::SUCCESS;}
private:
//MGV Decide whether or not to normalize autocorr elements
int m_normalize;
std::string m_acContName;
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
//Dear emacs, this is -*-c++-*-
#ifndef LARPEDESTALBUILDER_H
#define LARPEDESTALBUILDER_H
/********************************************************************
NAME: LArPedestalBuilder.h
PACKAGE: offline/LArCalorimeter/LArCalibUtils
AUTHORS: R. Lafaye
CREATED: Jun. 12, 2008 from LArPedestalMaker
PURPOSE: Get the pedestal and rms for each cell from LArAccumulatedDigits
at each gain and records them in TDS
********************************************************************/
#include "AthenaBaseComps/AthAlgorithm.h"
#include "LArRawEvent/LArAccumulatedDigitContainer.h"
#include "LArRawConditions/LArConditionsContainer.h"
class LArOnlineID;
//-----------------------------------------------------------------------
class LArPedestalBuilder : public AthAlgorithm
//-----------------------------------------------------------------------
{
public:
// Constructor
LArPedestalBuilder(const std::string & name, ISvcLocator * pSvcLocator);
// Destructor
~LArPedestalBuilder();
// Algorithm initialization
StatusCode initialize();
// Algorithm execution
StatusCode execute();
// Algorithm finalization
virtual StatusCode stop();
virtual StatusCode finalize(){return StatusCode::SUCCESS;}
protected:
const LArOnlineID * m_onlineHelper;
// Container key list
std::vector<std::string> m_keylist;
// Grouping type
std::string m_groupingType;
// Cache to accumulated substeps
typedef LArConditionsContainer<LArAccumulatedDigit> ACCU;
ACCU m_accu;
private:
unsigned m_event_counter;
std::string m_pedContName;
uint16_t m_fatalFebErrorPattern;
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/********************************************************************
NAME: LArAutoCorrBuilder.cxx
PACKAGE: offline/LArCalorimeter/LArCalibUtils
AUTHORS: R. Lafaye
CREATED: Jun. 12, 2008 from LArPedestalMaker
PURPOSE: Get the autocorrelation for each cell from LArAccumulatedDigits
at each gain and records them in TDS
In fact only the last (m_nsamples-1) elements of the
first line (or column) of autocorrelation matrix are
recovered and stored in TDS, for these reasons:
- symetrie of autocorrelation matrix
- equivalence of autocorrelation elements:
B(n,n+i)\eq B(m,m+i) (eg B12 \eq B23).
HISTORY:
Walter Lampl, 26 Aug 2009:
Derive from LArPedestalBuilder
********************************************************************/
// Include files
#include "LArCalibUtils/LArAutoCorrBuilder.h"
//#include "LArIdentifier/LArOnlineID.h"
//#include <math.h>
//#include <unistd.h>
LArAutoCorrBuilder::LArAutoCorrBuilder(const std::string& name, ISvcLocator* pSvcLocator)
: LArPedestalBuilder(name, pSvcLocator)
{
declareProperty("normalize", m_normalize=1);
declareProperty("AutoCorrKey", m_acContName="LArAutoCorr");
}
LArAutoCorrBuilder::~LArAutoCorrBuilder()
{}
//---------------------------------------------------------------------------
StatusCode LArAutoCorrBuilder::stop() {
ATH_MSG_DEBUG(">>> stop()");
auto larAutoCorrComplete = std::make_unique<LArAutoCorrComplete>();
// Initialize LArAutoCorrComplete
StatusCode sc=larAutoCorrComplete->setGroupingType(m_groupingType,msg());
if (sc.isFailure()) {
ATH_MSG_ERROR( "Failed to set groupingType for LArAutoCorrComplete object" );
return sc;
}
sc=larAutoCorrComplete->initialize();
if (sc.isFailure()) {
ATH_MSG_ERROR( "Failed initialize LArAutoCorrComplete object" );
return sc;
}
int n_zero,n_min, n_max, n_cur;
n_zero=0; n_max=n_min=-1;
unsigned NAutoCorr=0;
std::vector<float> cov;
//Loop over gains
for (unsigned k=0;k<(int)CaloGain::LARNGAIN;k++) {
CaloGain::CaloGain gain=(CaloGain::CaloGain)k;
//Loop over cells
ACCU::ConditionsMapIterator cell_it=m_accu.begin(gain);
ACCU::ConditionsMapIterator cell_it_e=m_accu.end(gain);
if (cell_it==cell_it_e) continue; //No data for this gain
for (;cell_it!=cell_it_e;cell_it++) {
const LArAccumulatedDigit& dg=*cell_it;
n_cur = dg.nTrigger();
if(n_cur==0) { n_zero++; continue; }
HWIdentifier chid = cell_it.channelId();
if(n_cur<n_min || n_min<0) n_min=n_cur;
if(n_cur>n_max || n_max<0) n_max=n_cur;
// Fill the data class with pedestal and rms values
dg.getCov(cov,m_normalize);
larAutoCorrComplete->set(chid,gain,cov);
NAutoCorr++;
}//end loop over all cells
ATH_MSG_DEBUG( "Gain " << gain << " Number of cells with 0 events to compute autocorr: " << n_zero );
ATH_MSG_DEBUG( "Gain " << gain << " Minimum number of events to compute autocorr: " << n_min );
ATH_MSG_DEBUG( "Gain " << gain << " Maximum number of events to compute autocorr: " << n_max );
}//end loop over gains
//msg(MSG::INFO << " Summary : Number of cells with a autocorr value computed : " << larAutoCorrComplete->totalNumberOfConditions() );
ATH_MSG_INFO( " Summary : Number of cells with a autocorr value computed : " << NAutoCorr );
ATH_MSG_INFO( " Summary : Number of Barrel PS cells side A or C (connected+unconnected): 3904+ 192 = 4096 " );
ATH_MSG_INFO( " Summary : Number of Barrel cells side A or C (connected+unconnected): 50944+2304 = 53248 " );
ATH_MSG_INFO( " Summary : Number of EMEC cells side A or C (connected+unconnected): 31872+3456 = 35328 " );
ATH_MSG_INFO( " Summary : Number of HEC cells side A or C (connected+unconnected): 2816+ 256 = 3072 " );
ATH_MSG_INFO( " Summary : Number of FCAL cells side A or C (connected+unconnected): 1762+ 30 = 1792 " );
// Record LArAutoCorrComplete
ATH_CHECK( detStore()->record(std::move(larAutoCorrComplete),m_acContName) );
return StatusCode::SUCCESS;
}
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
/********************************************************************
NAME: LArPedestalBuilder.cxx
PACKAGE: offline/LArCalorimeter/LArCalibUtils
AUTHORS: R. Lafaye
CREATED: Jun. 12, 2008 from LArPedestalMaker
PURPOSE: Get the pedestal and rms for each cell from LArAccumulatedDigits
at each gain and records them in TDS
HISTORY:
********************************************************************/
// Include files
#include "LArCalibUtils/LArPedestalBuilder.h"
#include "LArRawConditions/LArPedestalComplete.h"
#include "LArIdentifier/LArOnlineID.h"
//#include <math.h>
//#include <unistd.h>
#include <vector>
#include "LArRawEvent/LArFebErrorSummary.h"
LArPedestalBuilder::LArPedestalBuilder(const std::string& name, ISvcLocator* pSvcLocator)
: AthAlgorithm(name, pSvcLocator),
m_onlineHelper(0),
m_event_counter(0),
m_fatalFebErrorPattern(0xffff)
{
declareProperty("KeyList", m_keylist);
declareProperty("PedestalKey", m_pedContName="LArPedestal");
declareProperty("GroupingType", m_groupingType="ExtendedFeedThrough");
}
LArPedestalBuilder::~LArPedestalBuilder()
{}
StatusCode LArPedestalBuilder::initialize()
{
StatusCode sc;
ATH_MSG_INFO( ">>> Initialize" );
//m_mean.resize(1);
//m_rms.resize(1);
sc = detStore()->retrieve(m_onlineHelper, "LArOnlineID");
if (sc.isFailure()) {
ATH_MSG_ERROR( "Could not get LArOnlineID helper !" );
return StatusCode::FAILURE;
}
// m_fullFolderName="/lar/"+m_folderName+"/LArPedestal";
if (!m_keylist.size()) // Not key list given
{m_keylist.push_back("HIGH");
m_keylist.push_back("MEDIUM");
m_keylist.push_back("LOW");
m_keylist.push_back("FREE"); //For H6....
}
//m_pedestal.setGroupingType(LArConditionsContainerBase::SingleGroup);
m_accu.setGroupingType(LArConditionsContainerBase::SingleGroup);
ATH_CHECK ( m_accu.initialize() );
return StatusCode::SUCCESS;
}
//---------------------------------------------------------------------------
StatusCode LArPedestalBuilder::execute()
//---------------------------------------------------------------------------
{
++m_event_counter;
if (m_keylist.size()==0) {
ATH_MSG_ERROR( "Key list is empty! No containers processed!" );
return StatusCode::FAILURE;
}
const LArFebErrorSummary* febErrSum=NULL;
if (evtStore()->contains<LArFebErrorSummary>("LArFebErrorSummary")) {
ATH_CHECK( evtStore()->retrieve(febErrSum) );
}
else
if (m_event_counter==1)
ATH_MSG_WARNING( "No FebErrorSummaryObject found! Feb errors not checked!" );
const LArAccumulatedDigitContainer* container;
//Outermost loop goes over all gains (different containers).
for (const std::string& key : m_keylist) {
StatusCode sc= evtStore()->retrieve(container,key);
if (sc.isFailure() || !container) {
ATH_MSG_DEBUG("Cannot read LArAccumulatedDigitContainer from StoreGate! key=" << key);
return StatusCode::SUCCESS;
}
// check that container is not empty
if(container->size()==0 ) {
ATH_MSG_DEBUG("LArAccumulatedDigitContainer (key=" << key << ") is empty ");
continue;
}
HWIdentifier lastFailedFEB(0);
//Inner loop goes over the cells.
for (const LArAccumulatedDigit* dg : *container) { //Loop over all cells
if (dg->nTrigger()==0) continue; //Don't care about empty digits
const HWIdentifier chid=dg->hardwareID();
const HWIdentifier febid=m_onlineHelper->feb_Id(chid);
if (febErrSum) {
const uint16_t febErrs=febErrSum->feb_error(febid);
if (febErrs & m_fatalFebErrorPattern) {
if (febid!=lastFailedFEB) {
lastFailedFEB=febid;
ATH_MSG_ERROR( "Event " << m_event_counter << " Feb " << m_onlineHelper->channel_name(febid)
<< " reports error(s):" << febErrSum->error_to_string(febErrs) << ". Data ignored." );
}
continue;
} //end if fatal feb error
}//end if check feb error summary
const CaloGain::CaloGain gain=dg->gain();
LArAccumulatedDigit& accDg=m_accu.get(chid,gain);
if (!accDg.setAddSubStep(*dg))
ATH_MSG_ERROR( "Failed to accumulate sub-steps! Inconsistent number of ADC samples" );
} //end loop over input container
}//end loop over keys
return StatusCode::SUCCESS;
}
StatusCode LArPedestalBuilder::stop() {
// Create the LArPedestalComplete object
auto larPedestalComplete = std::make_unique<LArPedestalComplete>();
// Initialize LArPedestalComplete
ATH_CHECK( larPedestalComplete->setGroupingType(m_groupingType,msg()) );
ATH_CHECK( larPedestalComplete->initialize() );
int n_zero,n_min, n_max, n_cur;
n_zero=0; n_max=n_min=-1;
unsigned NPedestal=0;
//Loop over gains
for (unsigned k=0;k<(int)CaloGain::LARNGAIN;k++) {
CaloGain::CaloGain gain=(CaloGain::CaloGain)k;
//Loop over cells
ACCU::ConditionsMapIterator cell_it=m_accu.begin(gain);
ACCU::ConditionsMapIterator cell_it_e=m_accu.end(gain);
if (cell_it==cell_it_e) continue; //No data for this gain
for (;cell_it!=cell_it_e;cell_it++) {
const LArAccumulatedDigit& dg=*cell_it;
n_cur = dg.nTrigger();
if(n_cur==0) { n_zero++; continue; }
HWIdentifier chid = cell_it.channelId();
if(n_cur<n_min || n_min<0) n_min=n_cur;
if(n_cur>n_max || n_max<0) n_max=n_cur;
// Fill the data class with pedestal and rms values
larPedestalComplete->set(chid,gain,dg.mean(),dg.RMS());
NPedestal++;
}//end loop over all cells
ATH_MSG_DEBUG( "Gain " << gain << " Number of cells with 0 events to compute pedestal: " << n_zero );
ATH_MSG_DEBUG( "Gain " << gain << " Minimum number of events*samples to compute pedestal: " << n_min );
ATH_MSG_DEBUG( "Gain " << gain << " Maximum number of events*samples to compute pedestal: " << n_max );
}// End loop over all containers
//ATH_MSG_INFO( " Summary : Number of cells with a pedestal value computed : " << larPedestalComplete->totalNumberOfConditions() );
ATH_MSG_INFO( " Summary : Number of cells with a pedestal value computed : " << NPedestal );
ATH_MSG_INFO( " Summary : Number of Barrel PS cells side A or C (connected+unconnected): 3904+ 192 = 4096 " );
ATH_MSG_INFO( " Summary : Number of Barrel cells side A or C (connected+unconnected): 50944+2304 = 53248 " );
ATH_MSG_INFO( " Summary : Number of EMEC cells side A or C (connected+unconnected): 31872+3456 = 35328 " );
ATH_MSG_INFO( " Summary : Number of HEC cells side A or C (connected+unconnected): 2816+ 256 = 3072 " );
ATH_MSG_INFO( " Summary : Number of FCAL cells side A or C (connected+unconnected): 1762+ 30 = 1792 " );
// Record LArPedestalComplete
ATH_CHECK( detStore()->record(std::move(larPedestalComplete),m_pedContName) );
return StatusCode::SUCCESS;
}
#include "LArCalibUtils/LArAutoCorrMaker.h" #include "LArCalibUtils/LArAutoCorrMaker.h"
#include "LArCalibUtils/LArAutoCorrExtrapolate.h" #include "LArCalibUtils/LArAutoCorrExtrapolate.h"
#include "LArCalibUtils/LArAutoCorrBuilder.h"
#include "LArCalibUtils/LArAutoCorrDecoderTool.h" #include "LArCalibUtils/LArAutoCorrDecoderTool.h"
#include "LArCalibUtils/LArCalibDigitMaker.h" #include "LArCalibUtils/LArCalibDigitMaker.h"
#include "LArCalibUtils/LArCaliWaveAverage.h" #include "LArCalibUtils/LArCaliWaveAverage.h"
...@@ -15,7 +14,6 @@ ...@@ -15,7 +14,6 @@
#include "LArCalibUtils/LArOFCAlg.h" #include "LArCalibUtils/LArOFCAlg.h"
#include "LArCalibUtils/LArPedestalInPhysicsMaker.h" #include "LArCalibUtils/LArPedestalInPhysicsMaker.h"
#include "LArCalibUtils/LArPedestalMaker.h" #include "LArCalibUtils/LArPedestalMaker.h"
#include "LArCalibUtils/LArPedestalBuilder.h"
#include "LArCalibUtils/LArPhysWaveBuilder.h" #include "LArCalibUtils/LArPhysWaveBuilder.h"
#include "LArCalibUtils/LArPhysWaveShifter.h" #include "LArCalibUtils/LArPhysWaveShifter.h"
#include "LArCalibUtils/LArPhysWaveTool.h" #include "LArCalibUtils/LArPhysWaveTool.h"
...@@ -62,7 +60,6 @@ typedef LArCalibCopyAlg<LArTdriftComplete> LArTdriftCompleteCopyAlg; ...@@ -62,7 +60,6 @@ typedef LArCalibCopyAlg<LArTdriftComplete> LArTdriftCompleteCopyAlg;
DECLARE_COMPONENT( LArAutoCorrMaker ) DECLARE_COMPONENT( LArAutoCorrMaker )
DECLARE_COMPONENT( LArAutoCorrExtrapolate ) DECLARE_COMPONENT( LArAutoCorrExtrapolate )
DECLARE_COMPONENT( LArAutoCorrBuilder )
DECLARE_COMPONENT( LArCalibDigitMaker ) DECLARE_COMPONENT( LArCalibDigitMaker )
DECLARE_COMPONENT( LArCaliWaveAverage ) DECLARE_COMPONENT( LArCaliWaveAverage )
DECLARE_COMPONENT( LArCaliWaveBuilder ) DECLARE_COMPONENT( LArCaliWaveBuilder )
...@@ -74,7 +71,6 @@ DECLARE_COMPONENT( LArMasterWaveBuilder ) ...@@ -74,7 +71,6 @@ DECLARE_COMPONENT( LArMasterWaveBuilder )
DECLARE_COMPONENT( LArOFCAlg ) DECLARE_COMPONENT( LArOFCAlg )
DECLARE_COMPONENT( LArPedestalInPhysicsMaker ) DECLARE_COMPONENT( LArPedestalInPhysicsMaker )
DECLARE_COMPONENT( LArPedestalMaker ) DECLARE_COMPONENT( LArPedestalMaker )
DECLARE_COMPONENT( LArPedestalBuilder )
DECLARE_COMPONENT( LArPedestalAutoCorrBuilder ) DECLARE_COMPONENT( LArPedestalAutoCorrBuilder )
DECLARE_COMPONENT( LArPhysWaveBuilder ) DECLARE_COMPONENT( LArPhysWaveBuilder )
DECLARE_COMPONENT( LArPhysWaveShifter ) DECLARE_COMPONENT( LArPhysWaveShifter )
......
from future import standard_library
standard_library.install_aliases()
import subprocess
###############################################################################
#
# <Sandrine.Laplace@lapp.in2p3.fr>
#
# Example jobOptions to reconstruction one or more pedestal runs from data
# using accumulated pedestals
# Flags:
# - Pedestal: run LArPedestalBuilder that reads the DSP LArAccumulatedDigits
# dump corresponding Pedestals and LArAccumulatedDigits (key: gain) into ntuple
# - AutoCorr: run LArAutorCorrBuilder that reads the DSP LArAccumulatedDigits
# dump corresponding AutoCorr and (same than above) LArAccumulatedDigits into ntuple
# - Accumulator: run LArDigitsAccumulator to crosscheck DSP computation
# dump corresponding LArAccumulatedDigits (key: gain+AccuDigOff)
#
###############################################################################
include("LArCalibProcessing/LArCalib_Flags.py")
include("LArCalibProcessing/GetInputFiles.py")
#######################################################
# Run properties
#######################################################
if not 'SubDet' in dir():
SubDet = "Barrel"
if not 'RunNumberList' in dir():
RunNumberList = [ 26924 ]
if not 'FilePrefix' in dir():
FilePrefix = "daq.Pedestal"
if not 'InputDir' in dir():
InputDir = "/castor/cern.ch/grid/atlas/DAQ/lar/ElecCalib/2008"
if not 'Partition' in dir():
if (SubDet=='EndCap'):
Partition = "EB-EC*"
else:
Partition = "EB-EMB*"
if not 'FullFileName' in dir():
Trigger = "*"+Partition
FullFileName =[]
for RunNumber in RunNumberList :
FullFileName+=GetInputFilesFromTokens(InputDir,RunNumber,FilePrefix,Trigger)
if not 'GainList' in dir():
GainList = [ "HIGH" ]
if not 'KeyOutputAccum' in dir():
KeyOutputAccum = "AccuDigOff"
if not 'GainListAccum' in dir():
GainListAccum =[]
for i in GainList:
newKey=i+KeyOutputAccum
GainListAccum.append(newKey)
printfunc ("GainListAccum = ",GainListAccum)
if not 'GroupingType' in dir():
GroupingType = "ExtendedSubDetector"
if not 'ChannelSelection' in dir():
# read all
ChannelSelection = " "
## example to read only cool for Barrel C : Strips->Back
#ChannelSelection = "<channelSelection>0,3:34</channelSelection>"
from string import *
def DBConnectionFile(sqlitefile):
return "sqlite://;schema="+sqlitefile+";dbname=CONDBR2"
#######################################################
# Monitoring properties
#######################################################
if not 'doMonitoring' in dir():
doMonitoring = False
if not 'doLArCalibDataQuality' in dir():
doLArCalibDataQuality = False
if not 'online' in dir():
online = False
#######################################################
# Pedestal and AutoCorrelation properties
#######################################################
if not 'Pedestal' in dir():
Pedestal = True
if not 'AutoCorr' in dir():
AutoCorr = True
if not 'Accumulator' in dir():
Accumulator = True
if not 'EventsRef' in dir():
EventsRef = 10
if not 'NSigma' in dir():
NSigma = 5
if not 'NSamples' in dir():
NSamples = 7
if not 'WhichSample' in dir():
WhichSample = 0
#######################################################
# Pedestal and AutoCorrelation output name
#######################################################
if not 'WriteNtuple' in dir():
WriteNtuple = LArCalib_Flags.WriteNtuple
if not 'WritePoolFile' in dir():
WritePoolFile = LArCalib_Flags.WritePoolFile
if not 'WriteIOV' in dir():
WriteIOV = LArCalib_Flags.WriteIOV
if not 'IOVBegin' in dir():
IOVBegin = RunNumberList[0]
if not 'IOVEnd' in dir():
IOVEnd = LArCalib_Flags.IOVEnd
if not 'DBConnectionCOOL' in dir():
DBConnectionCOOL = "oracle://ATLAS_COOLPROD;schema=ATLAS_COOLOFL_LAR;dbname=CONDBR2;"
if not 'OutputPedAutoCorrRootFileDir' in dir():
OutputPedAutoCorrRootFileDir = subprocess.getoutput("pwd")
if not 'OutputPedPoolFileDir' in dir():
OutputPedPoolFileDir = subprocess.getoutput("pwd")
if not 'PedLArCalibFolderTag' in dir():
PedLArCalibFolderTag = LArCalib_Flags.tagSuffix
if not 'OutputAutoCorrPoolFileDir' in dir():
OutputAutoCorrPoolFileDir = subprocess.getoutput("pwd")
if not 'OutputDB' in dir():
OutputDB = LArCalib_Flags.OutputDB
if 'OutputSQLiteFile' in dir():
OutputDB = DBConnectionFile(OutputSQLiteFile)
if not 'KeyOutputAC' in dir():
KeyOutputAC = "LArAutoCorr"
if not 'KeyOutputPed' in dir():
KeyOutputPed = "Pedestal" # need Pedestal to merge with oracle, LArPedestal doesn't work
if not 'BaseFileNamePed' in dir():
BaseFileNamePed = "LArPedestal"
if not 'BaseFileNameAutoCorr' in dir():
BaseFileNameAutoCorr = "LArAutoCorr"
if not 'BaseFileNameAccum' in dir():
BaseFileNameAccum = "LArAccumulatedDigits"
for RunNumber in RunNumberList :
if Pedestal :
BaseFileNamePedAutoCorr = BaseFileNamePed + "_"
if AutoCorr :
if Pedestal :
BaseFileNamePedAutoCorr = BaseFileNamePedAutoCorr + BaseFileNameAutoCorr + "_"
else :
BaseFileNamePedAutoCorr = BaseFileNameAutoCorr + "_"
if Accumulator :
BaseFileNamePedAutoCorr = BaseFileNameAccum + "_"
BaseFileNamePedAutoCorr = BaseFileNamePedAutoCorr + str(RunNumber)+"_"+Partition.replace("*","")
BaseFileNamePed = BaseFileNamePed + "_" + str(RunNumber)+"_"+Partition.replace("*","")
BaseFileNameAutoCorr = BaseFileNameAutoCorr + "_" + str(RunNumber)+"_"+Partition.replace("*","")
if not 'OutputPedAutoCorrRootFileName' in dir():
OutputPedAutoCorrRootFileName = BaseFileNamePedAutoCorr+ ".root"
if not 'OutputAutoCorrPoolFileName' in dir():
OutputAutoCorrPoolFileName = BaseFileNameAutoCorr + ".pool.root"
if not 'OutputPedPoolFileName' in dir():
OutputPedPoolFileName = BaseFileNamePed + ".pool.root"
if not 'OutputObjectSpecPed' in dir():
OutputObjectSpecPed = "LArPedestalComplete#"+KeyOutputPed+"#"+LArCalib_Flags.LArPedestalFolder
OutputTagSpecPed=LArCalibFolderTag(LArCalib_Flags.LArPedestalFolder,PedLArCalibFolderTag)
if not 'OutputObjectSpecAutoCorr' in dir():
OutputObjectSpecAutoCorr = "LArAutoCorrComplete#"+KeyOutputAC+"#"+LArCalib_Flags.LArAutoCorrFolder
OutputTagSpecAutoCorr=LArCalibFolderTag(LArCalib_Flags.LArAutoCorrFolder,PedLArCalibFolderTag)
#######################################################################################
# print summary
#######################################################################################
PedestalAutoCorrLog = logging.getLogger( "PedestalAutoCorrLog" )
PedestalAutoCorrLog.info( " ======================================================== " )
PedestalAutoCorrLog.info( " *** LAr Pedestal/AutoCorr summary *** " )
PedestalAutoCorrLog.info( " ======================================================== " )
PedestalAutoCorrLog.info( " RunNumber = "+str(RunNumberList) )
PedestalAutoCorrLog.info( " SubDetector = "+SubDet )
PedestalAutoCorrLog.info( " Partition = "+Partition )
PedestalAutoCorrLog.info( " Type = "+str(FilePrefix.strip().split('.',9)[1]) )
PedestalAutoCorrLog.info( " LArGain = "+str(GainList) )
for i in range(len(FullFileName)):
PedestalAutoCorrLog.info( " FullFileName = "+FullFileName[i] )
PedestalAutoCorrLog.info( " PedLArCalibFolderTag = "+PedLArCalibFolderTag )
PedestalAutoCorrLog.info( " OutputPedAutoCorrRootFullFileName = "+OutputPedAutoCorrRootFileDir + "/" + OutputPedAutoCorrRootFileName )
PedestalAutoCorrLog.info( " OutputPedPoolFullFileName = "+OutputPedPoolFileDir + "/" + OutputPedPoolFileName )
PedestalAutoCorrLog.info( " OutputAutoCorrPoolFullFileName = "+OutputAutoCorrPoolFileDir + "/" + OutputAutoCorrPoolFileName )
PedestalAutoCorrLog.info( " OutputObjectSpecPed = "+OutputObjectSpecPed )
PedestalAutoCorrLog.info( " OutputTagSpecPed = "+OutputTagSpecPed )
PedestalAutoCorrLog.info( " OutputObjectSpecAutoCorr = "+OutputObjectSpecAutoCorr )
PedestalAutoCorrLog.info( " OutputTagSpecAutoCorr = "+OutputTagSpecAutoCorr )
PedestalAutoCorrLog.info( " IOVBegin = "+str(IOVBegin) )
PedestalAutoCorrLog.info( " IOVEnd = "+str(IOVEnd) )
PedestalAutoCorrLog.info( " LArCalibOutputDB = "+OutputDB )
PedestalAutoCorrLog.info( " ======================================================== " )
#######################################################################################
include ("LArConditionsCommon/LArMinimalSetup.py")
#
# Provides ByteStreamInputSvc name of the data file to process in the offline context
#
## get a handle to the default top-level algorithm sequence
from AthenaCommon.AlgSequence import AlgSequence
topSequence = AlgSequence()
## get a handle to the ApplicationManager, to the ServiceManager and to the ToolSvc
from AthenaCommon.AppMgr import (theApp, ServiceMgr as svcMgr,ToolSvc)
## define the DB Gobal Tag :
svcMgr.IOVDbSvc.GlobalTag = LArCalib_Flags.globalFlagDB
try:
svcMgr.IOVDbSvc.DBInstance=""
except:
pass
theByteStreamInputSvc=svcMgr.ByteStreamInputSvc
if not 'FullFileName' in dir():
PedestalAutoCorrLog.info( "No FullFileName! Please give a FullFileName list")
theApp.exit(-1)
else :
svcMgr.EventSelector.Input=FullFileName
from LArByteStream.LArByteStreamConf import LArRodDecoder
svcMgr.ToolSvc += LArRodDecoder()
theByteStreamAddressProviderSvc =svcMgr.ByteStreamAddressProviderSvc
theByteStreamAddressProviderSvc.TypeNames += ["LArFebHeaderContainer/LArFebHeader"]
theByteStreamAddressProviderSvc.TypeNames += ["LArDigitContainer/HIGH"]
theByteStreamAddressProviderSvc.TypeNames += ["LArAccumulatedDigitContainer/HIGH"]
#######################################################
# #
# Pedestal run reconstruction #
# #
#######################################################
if Pedestal :
from LArCalibUtils.LArCalibUtilsConf import LArPedestalBuilder
LArPedestalBuilder=LArPedestalBuilder("LArPedestalBuilder")
LArPedestalBuilder.KeyList = GainList
LArPedestalBuilder.KeyOutput = KeyOutputPed
LArPedestalBuilder.GroupingType = GroupingType
topSequence += LArPedestalBuilder
if AutoCorr :
from LArCalibUtils.LArCalibUtilsConf import LArAutoCorrBuilder
LArAutoCorrBuilder=LArAutoCorrBuilder("LArAutoCorrBuilder")
LArAutoCorrBuilder.KeyList = GainList
LArAutoCorrBuilder.KeyOutput = KeyOutputAC
LArAutoCorrBuilder.GroupingType = GroupingType
topSequence += LArAutoCorrBuilder
if Accumulator :
from LArROD.LArRODConf import LArDigitsAccumulator
LArDigitsAccumulator=LArDigitsAccumulator("LArDigitsAccumulator")
LArDigitsAccumulator.KeyList = GainList
LArDigitsAccumulator.LArAccuDigitContainerName=KeyOutputAccum
topSequence += LArDigitsAccumulator
######################################################################
# #
# Output #
# #
######################################################################
if ( WriteNtuple ) :
if Pedestal :
from LArCalibTools.LArCalibToolsConf import LArPedestals2Ntuple
LArPedestals2Ntuple = LArPedestals2Ntuple("LArPedestals2Ntuple")
LArPedestals2Ntuple.ContainerKey = KeyOutputPed
topSequence += LArPedestals2Ntuple
if AutoCorr :
from LArCalibTools.LArCalibToolsConf import LArAutoCorr2Ntuple
LArAutoCorr2Ntuple = LArAutoCorr2Ntuple( "LArAutoCorr2Ntuple" )
LArAutoCorr2Ntuple.Nsamples = NSamples
LArAutoCorr2Ntuple.ContainerKey = KeyOutputAC
topSequence += LArAutoCorr2Ntuple
if Pedestal or AutoCorr:
from LArCalibTools.LArCalibToolsConf import LArAccumulatedDigits2Ntuple
for i in GainList:
NtupleName="NtupleDSP"+i
NtupleDSP = LArAccumulatedDigits2Ntuple( NtupleName )
NtupleDSP.NSamples = NSamples
NtupleDSP.ContainerKey = i
topSequence += NtupleDSP
printfunc (NtupleDSP)
if Accumulator :
from LArCalibTools.LArCalibToolsConf import LArAccumulatedDigits2Ntuple
for i in GainListAccum:
NtupleName="NtupleOff"+i
NtupleOff = LArAccumulatedDigits2Ntuple( NtupleName )
NtupleOff.NSamples = NSamples
NtupleOff.ContainerKey = i
topSequence += NtupleOff
printfunc (NtupleOff)
theApp.HistogramPersistency = "ROOT"
from GaudiSvc.GaudiSvcConf import NTupleSvc
if os.path.exists(OutputPedAutoCorrRootFileDir + "/" + OutputPedAutoCorrRootFileName):
os.remove(OutputPedAutoCorrRootFileDir + "/" + OutputPedAutoCorrRootFileName)
svcMgr += NTupleSvc()
svcMgr.NTupleSvc.Output = [ "FILE1 DATAFILE='"+OutputPedAutoCorrRootFileDir + "/" + OutputPedAutoCorrRootFileName+"' OPT='NEW'" ]
###########################################################################
svcMgr.MessageSvc.OutputLevel = WARNING
svcMgr.MessageSvc.defaultLimit = 10000
svcMgr.MessageSvc.Format = "% F%20W%S%7W%R%T %0W%M"
svcMgr+=CfgMgr.AthenaEventLoopMgr(OutputLevel = INFO)
from AthenaCommon.AppMgr import theAuditorSvc
from AthenaCommon.ConfigurableDb import getConfigurable
theAuditorSvc += getConfigurable("MemStatAuditor")(OutputLevel = WARNING)
theApp.AuditAlgorithms=True
theAuditorSvc += getConfigurable("ChronoAuditor")()
theAuditorSvc += getConfigurable("NameAuditor")()
svcMgr.ChronoStatSvc.OutputLevel = INFO
###########################################################################
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment