diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h index a21af64c586eb59b1dcc2aa236501c524e7493c2..304409d599c0db06838b8062eea026cbeefbf2c1 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h @@ -124,27 +124,27 @@ class TileCisDefaultCalibTool: public AthAlgTool bool m_doSampleChecking; // Results - float m_calib[5][64][48][2]; - int m_qflag[5][64][48][2]; - int m_nDAC[5][64][48][2]; // This is now deprecated since you can get this form the TGraph - int m_nDigitalErrors[5][64][48][2]; - float m_chi2[5][64][48][2]; + float (*m_calib)[64][48][2]; + int (*m_qflag)[64][48][2]; + int (*m_nDAC)[64][48][2]; // This is now deprecated since you can get this form the TGraph + int (*m_nDigitalErrors)[64][48][2]; + float (*m_chi2)[64][48][2]; // These will not be saved to the ntuple // They are for the sample check that gets written to qflag // Mike Miller - 4 June 2009 - int m_edgeSample[5][64][48][2]; - int m_nextToEdgeSample[5][64][48][2]; + int (*m_edgeSample)[64][48][2]; + int (*m_nextToEdgeSample)[64][48][2]; // these arrays are used to contain information about stuck bits in adc's // this array pertains to the "stuck bit" quality flag; it is not written to // the ntuple - int m_SampleBit[5][64][48][2][10]; + int (*m_sampleBit)[64][48][2][10]; // This array contains information about each bit in the adc // it IS written into the ntuple - unsigned short m_BitStatus[5][64][48][2][4]; + unsigned short (*m_bitStatus)[64][48][2][4]; // used to count the number of injection samples analyzed for odd bit behavior - int m_NumSamp[5][64][48][2]; + int (*m_numSamp)[64][48][2]; // TList *scanList; // This is now deprecated and replaced by the map for speed -CT March 09 TMap* m_scanMap; diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h index 5c01388b45ea5a174884bb6843b14adec363f70d..db032623518e8cb7489f45038e8946b12da3ce8b 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h @@ -117,14 +117,14 @@ class TileDigiNoiseCalibAlg: public AthAlgorithm { std::string m_optRawChannelContainer;*/ std::string m_dspRawChannelContainer; - double m_SumPed2[5][64][48][2]; - double m_SumRms2[5][64][48][2]; - double m_MeanAmp[5][64][48][2]; - double m_MeanAmp_ij[5][64][48][48][2]; + double (*m_sumPed2)[64][48][2]; + double (*m_sumRms2)[64][48][2]; + double (*m_meanAmp)[64][48][2]; + double (*m_meanAmp_ij)[64][48][48][2]; // event number int m_evtNr; - int m_evt[5][64][48][2]; + int (*m_evt)[64][48][2]; // Trigger items int m_time; @@ -136,15 +136,15 @@ class TileDigiNoiseCalibAlg: public AthAlgorithm { int m_min; int m_run; int m_trigType; - uint8_t m_ros[5][64][48][2]; - uint8_t m_drawer[5][64][48][2]; - uint8_t m_channel[5][64][48][2]; - bool m_gain[5][64][48][2]; - float m_ped[5][64][48][2]; - float m_lfn[5][64][48][2]; - float m_hfn[5][64][48][2]; - float m_noise_cov[5][64][2]; - float m_auto_corr[5][64][48][2][36]; + uint8_t (*m_ros)[64][48][2]; + uint8_t (*m_drawer)[64][48][2]; + uint8_t (*m_channel)[64][48][2]; + bool (*m_gain)[64][48][2]; + float (*m_ped)[64][48][2]; + float (*m_lfn)[64][48][2]; + float (*m_hfn)[64][48][2]; + float (*m_noise_cov)[64][2]; + float (*m_auto_corr)[64][48][2][36]; }; #endif // TILENOISECALIBALG_H diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h index cdf5177be407710c5f8dea6873c82235111d39d1..2d47cf41d3df2d84521da82048441da5b48158bd 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h @@ -71,7 +71,6 @@ class TileRawChNoiseCalibAlg: public AthAlgorithm { const SG::ReadHandleKey<TileRawChannelContainer>& rawChannelContainerKey, RCtype rctype); // raw chans variables is done here void StoreRunInfo(const TileDQstatus* dqStatus); // called only at the first event. General variables - void removeRC(RCtype rctype); // if a RawChannel container doesn't exist, it is removed from the list void fillCell(TileRawChannelUnit::UNIT RChUnit, const TileRawChannel * rch); void fillCellHist(); //fill HGHG and LGLG histograms @@ -156,16 +155,16 @@ class TileRawChNoiseCalibAlg: public AthAlgorithm { std::string m_OF1RawChannelContainer; std::string m_MFRawChannelContainer; - TH1F* m_histAmp[RCnum][5][64][48][2]; - TH1F* m_histCellAmp[2][64][4][17][6]; + TH1F* (*m_histAmp)[5][64][48][2]; + TH1F* (*m_histCellAmp)[64][4][17][6]; // event number int m_evtNr; - int m_evt[5][64][48][2]; - uint8_t m_ros[5][64][48][2]; - uint8_t m_drawer[5][64][48][2]; - uint8_t m_channel[5][64][48][2]; - bool m_gain[5][64][48][2]; + int (*m_evt)[64][48][2]; + uint8_t (*m_ros)[64][48][2]; + uint8_t (*m_drawer)[64][48][2]; + uint8_t (*m_channel)[64][48][2]; + bool (*m_gain)[64][48][2]; // Trigger items int m_time; int m_year; @@ -179,27 +178,27 @@ class TileRawChNoiseCalibAlg: public AthAlgorithm { //int m_nsamples; // RawCh items - float m_rc_mean[RCnum][5][64][48][2]; - float m_rc_sigma[RCnum][5][64][48][2]; - float m_rc_av[RCnum][5][64][48][2]; - float m_rc_rms[RCnum][5][64][48][2]; - float m_rc_skewness[RCnum][5][64][48][2]; - float m_rc_kurtosis[RCnum][5][64][48][2]; - float m_rc_mean_err[RCnum][5][64][48][2]; - float m_rc_sigma_err[RCnum][5][64][48][2]; - float m_rc_chi2[RCnum][5][64][48][2]; - float m_rc_ndf[RCnum][5][64][48][2]; - float m_rc_probC2[RCnum][5][64][48][2]; - - float m_rc_ggpar[RCnum][5][64][48][2][8]; // sigma gauss1, rel normalization of the gaussians, sigma gauss2, chi2/ndf, error in sigma1, sigma2 and normalization, correlation between sigma1 and sigma2 - float m_rc_gsigma1[RCnum][5][64][48][2]; - float m_rc_gsigma2[RCnum][5][64][48][2]; - float m_rc_gnorm[RCnum][5][64][48][2]; - float m_rc_gchi2[RCnum][5][64][48][2]; - float m_rc_gerrsigma1[RCnum][5][64][48][2]; - float m_rc_gerrsigma2[RCnum][5][64][48][2]; - float m_rc_gerrnorm[RCnum][5][64][48][2]; - float m_rc_gcorrsigma1sigma2[RCnum][5][64][48][2]; + float (*m_rc_mean)[5][64][48][2]; + float (*m_rc_sigma)[5][64][48][2]; + float (*m_rc_av)[5][64][48][2]; + float (*m_rc_rms)[5][64][48][2]; + float (*m_rc_skewness)[5][64][48][2]; + float (*m_rc_kurtosis)[5][64][48][2]; + float (*m_rc_mean_err)[5][64][48][2]; + float (*m_rc_sigma_err)[5][64][48][2]; + float (*m_rc_chi2)[5][64][48][2]; + float (*m_rc_ndf)[5][64][48][2]; + float (*m_rc_probC2)[5][64][48][2]; + + float (*m_rc_ggpar)[5][64][48][2][8]; // sigma gauss1, rel normalization of the gaussians, sigma gauss2, chi2/ndf, error in sigma1, sigma2 and normalization, correlation between sigma1 and sigma2 + float (*m_rc_gsigma1)[5][64][48][2]; + float (*m_rc_gsigma2)[5][64][48][2]; + float (*m_rc_gnorm)[5][64][48][2]; + float (*m_rc_gchi2)[5][64][48][2]; + float (*m_rc_gerrsigma1)[5][64][48][2]; + float (*m_rc_gerrsigma2)[5][64][48][2]; + float (*m_rc_gerrnorm)[5][64][48][2]; + float (*m_rc_gcorrsigma1sigma2)[5][64][48][2]; //Cell items //structure is side: A=0 C=1, @@ -207,27 +206,27 @@ class TileRawChNoiseCalibAlg: public AthAlgorithm { // sample: A=0, BC=1, D=2, E=3 // tower: 0-16, // gain combination: LGLG, LG-, -LG, HGHG, HG-, -HG - bool m_side[2][64][4][17][6]; - uint8_t m_phi[2][64][4][17][6]; - uint8_t m_sample[2][64][4][17][6]; - uint8_t m_tower[2][64][4][17][6]; - uint8_t m_gg[2][64][4][17][6]; - - float m_ecell_av[2][64][4][17][6]; - float m_ecell_rms[2][64][4][17][6]; - uint32_t m_ecell_hash[2][64][4][17]; - - int m_cell_nch[2][64][4][17][2]; // number of good channels in given cell in given event - 0 or 1 or 2 - float m_ecell_ene[2][64][4][17][2]; - float m_ggpar[2][64][4][17][6][8]; // sigma gauss1, rel normalization of the gaussians, sigma gauss2, chi2/ndf, error in sigma1, sigma2 and normalization, correlation between sigma1 and sigma2 - float m_gsigma1[2][64][4][17][6]; - float m_gsigma2[2][64][4][17][6]; - float m_gnorm[2][64][4][17][6]; - float m_gchi2[2][64][4][17][6]; - float m_gerrsigma1[2][64][4][17][6]; - float m_gerrsigma2[2][64][4][17][6]; - float m_gerrnorm[2][64][4][17][6]; - float m_gcorrsigma1sigma2[2][64][4][17][6]; + bool (*m_side)[64][4][17][6]; + uint8_t (*m_phi)[64][4][17][6]; + uint8_t (*m_sample)[64][4][17][6]; + uint8_t (*m_tower)[64][4][17][6]; + uint8_t (*m_gg)[64][4][17][6]; + + float (*m_ecell_av)[64][4][17][6]; + float (*m_ecell_rms)[64][4][17][6]; + uint32_t (*m_ecell_hash)[64][4][17]; + + int (*m_cell_nch)[64][4][17][2]; // number of good channels in given cell in given event - 0 or 1 or 2 + float (*m_ecell_ene)[64][4][17][2]; + float (*m_ggpar)[64][4][17][6][8]; // sigma gauss1, rel normalization of the gaussians, sigma gauss2, chi2/ndf, error in sigma1, sigma2 and normalization, correlation between sigma1 and sigma2 + float (*m_gsigma1)[64][4][17][6]; + float (*m_gsigma2)[64][4][17][6]; + float (*m_gnorm)[64][4][17][6]; + float (*m_gchi2)[64][4][17][6]; + float (*m_gerrsigma1)[64][4][17][6]; + float (*m_gerrsigma2)[64][4][17][6]; + float (*m_gerrnorm)[64][4][17][6]; + float (*m_gcorrsigma1sigma2)[64][4][17][6]; enum CELL_CHANNEL {OUTER_MBTS_CHANNEL = 4, SPECIAL_C10_CHANNEL = 5, E1_CHANNEL = 12}; }; diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTOFTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTOFTool.h index 2e4a18aa144c74d4431e8b5f221dad355f8c3fcf..f14808f0a57ef1e42471847ce6ead681018966c1 100755 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTOFTool.h +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTOFTool.h @@ -43,7 +43,7 @@ class TileTOFTool : public AthAlgTool, virtual public ITileCalibTool float timeCor(int mod_ref1, int mod_ref2, int part_ref1, int part_ref2); - float m_TimeCor[4][64]; + float (*m_timeCor)[64]; float m_LBA_LBC[4]; float m_LBA_EBA[4]; @@ -56,8 +56,8 @@ class TileTOFTool : public AthAlgTool, virtual public ITileCalibTool float m_LA_LC; float m_LA_EC; - float m_tcor[4][32][32]; - int m_Npair[4][32][32]; + float (*m_tcor)[32][32]; + int (*m_nPair)[32][32]; }; #endif diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h index cb828261d57d619bda1d7a94a1b5347c877ce096..0002708fdbc42d6e51107f30292fab885106af64 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h @@ -66,27 +66,27 @@ class TileTriggerDefaultCalibTool : public AthAlgTool, virtual public ITileCalib "TriggerTowerContainer", "xAODTriggerTowers", "Trigger Tower container"}; // Results Tile - float m_meanTile[5][64][48]; - float m_rmsTile[5][64][48]; - float m_meanTileDAC[5][64][48]; - float m_rmsTileDAC[5][64][48]; - int m_ietaTile[5][64][48]; - int m_iphiTile[5][64][48]; - int m_ipmtTile[5][64][48]; - int m_nEvtTile[5][64][48]; + float (*m_meanTile)[64][48]; + float (*m_rmsTile)[64][48]; + float (*m_meanTileDAC)[64][48]; + float (*m_rmsTileDAC)[64][48]; + int (*m_ietaTile)[64][48]; + int (*m_iphiTile)[64][48]; + int (*m_ipmtTile)[64][48]; + int (*m_nEvtTile)[64][48]; // Results L1Calo - float m_meanL1Calo[5][64][48]; - float m_rmsL1Calo[5][64][48]; - float m_meanL1CaloDAC[5][64][48]; - float m_rmsL1CaloDAC[5][64][48]; - int m_ietaL1Calo[5][64][48]; - int m_iphiL1Calo[5][64][48]; - int m_ipmtL1Calo[5][64][48]; - int m_nEvtL1Calo[5][64][48]; - - float m_meanTileL1Calo[5][64][48]; - float m_rmsTileL1Calo[5][64][48]; + float (*m_meanL1Calo)[64][48]; + float (*m_rmsL1Calo)[64][48]; + float (*m_meanL1CaloDAC)[64][48]; + float (*m_rmsL1CaloDAC)[64][48]; + int (*m_ietaL1Calo)[64][48]; + int (*m_iphiL1Calo)[64][48]; + int (*m_ipmtL1Calo)[64][48]; + int (*m_nEvtL1Calo)[64][48]; + + float (*m_meanTileL1Calo)[64][48]; + float (*m_rmsTileL1Calo)[64][48]; float m_DACvalue; diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx index a136b6fb1612b282eec4f4c12d74c12a1116bfae..c263cc95b42ee96f5987b84c2ee9ba7acef6f5b1 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx @@ -66,29 +66,41 @@ TileCisDefaultCalibTool::TileCisDefaultCalibTool(const std::string& type, const declareProperty("doSampleChecking", m_doSampleChecking = true); // do sample checking by default declareProperty("StuckBitsProbsTool", m_stuckBitsProbs); declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus"); + + // Initialize arrays for results + m_calib = new float[5][64][48][2](); + m_qflag = new int[5][64][48][2](); + m_nDAC = new int[5][64][48][2](); + m_nDigitalErrors = new int[5][64][48][2](); + m_chi2 = new float[5][64][48][2](); + + // Initialize sample check arrays + m_edgeSample = new int[5][64][48][2](); + m_nextToEdgeSample = new int[5][64][48][2](); + + m_sampleBit = new int[5][64][48][2][10](); + m_bitStatus = new unsigned short[5][64][48][2][4](); + m_numSamp = new int[5][64][48][2](); } TileCisDefaultCalibTool::~TileCisDefaultCalibTool() { + + delete[] m_calib; + delete[] m_qflag; + delete[] m_nDAC; + delete[] m_nDigitalErrors; + delete[] m_chi2; + delete[] m_edgeSample; + delete[] m_nextToEdgeSample; + delete[] m_sampleBit; + delete[] m_bitStatus; + delete[] m_numSamp; + } StatusCode TileCisDefaultCalibTool::initialize() { ATH_MSG_INFO( "initialize()" ); - // Initialize arrays for results - memset(m_calib, 0, sizeof(m_calib)); - memset(m_qflag, 0, sizeof(m_qflag)); - memset(m_nDAC, 0, sizeof(m_nDAC)); - memset(m_nDigitalErrors, 0, sizeof(m_nDigitalErrors)); - memset(m_chi2, 0, sizeof(m_chi2)); - - // Initialize sample check arrays - memset(m_edgeSample, 0, sizeof(m_edgeSample)); - memset(m_nextToEdgeSample, 0, sizeof(m_nextToEdgeSample)); - - memset(m_SampleBit, 0, sizeof(m_SampleBit)); - memset(m_BitStatus, 0, sizeof(m_BitStatus)); - memset(m_NumSamp, 0, sizeof(m_NumSamp)); - // get TileHWID helper CHECK( detStore()->retrieve(m_tileHWID) ); @@ -99,7 +111,7 @@ StatusCode TileCisDefaultCalibTool::initialize() { CHECK( m_dqStatusKey.initialize() ); ATH_CHECK( m_rawChannelContainerKey.initialize() ); - ATH_CHECK( m_digitsContainerKey.initialize() ); + ATH_CHECK( m_digitsContainerKey.initialize(m_doSampleChecking) ); return StatusCode::SUCCESS; } @@ -271,7 +283,7 @@ StatusCode TileCisDefaultCalibTool::execute() { for(unsigned int sampNum = 0; sampNum < theDigits.size(); sampNum++) { // Count the total number of samples taken by an ADC - m_NumSamp[ros][drawer][chan][gain] += 1; + m_numSamp[ros][drawer][chan][gain] += 1; int k = 0; int quotient = theDigits[sampNum]; @@ -279,7 +291,7 @@ StatusCode TileCisDefaultCalibTool::execute() { while(quotient!=0) { if((quotient % 2) == 1) { // If the bit is one, store info in the array - m_SampleBit[ros][drawer][chan][gain][k] += 1; + m_sampleBit[ros][drawer][chan][gain][k] += 1; } quotient = quotient / 2; @@ -557,19 +569,19 @@ StatusCode TileCisDefaultCalibTool::finalizeCalculations() { int NoStuckBit = 1; for(int i = 0; i < 10; i++) { // If a bit is stuck at zero... - if(m_SampleBit[ros][drawer][chan][gain][i] == 0 && (m_NumSamp[ros][drawer][chan][gain] != 0)) { - // write information to m_BitStatus array of shorts + if(m_sampleBit[ros][drawer][chan][gain][i] == 0 && (m_numSamp[ros][drawer][chan][gain] != 0)) { + // write information to m_bitStatus array of shorts // each bit in short corresponds to a bit in an adc // with 6 short bits left over - m_BitStatus[ros][drawer][chan][gain][0] += pow(2, i); + m_bitStatus[ros][drawer][chan][gain][0] += pow(2, i); NoStuckBit = 0; ATH_MSG_DEBUG( "\n\nBIT STUCK AT ZERO: " << ros << " " << drawer << " " << chan << " " << gain << " " << i << "\n"); } // Same for a bit stuck at one - else if (m_SampleBit[ros][drawer][chan][gain][i] == m_NumSamp[ros][drawer][chan][gain] && (m_NumSamp[ros][drawer][chan][gain] != 0)) { - m_BitStatus[ros][drawer][chan][gain][1] += pow(2, i); + else if (m_sampleBit[ros][drawer][chan][gain][i] == m_numSamp[ros][drawer][chan][gain] && (m_numSamp[ros][drawer][chan][gain] != 0)) { + m_bitStatus[ros][drawer][chan][gain][1] += pow(2, i); NoStuckBit = 0; ATH_MSG_DEBUG( "\n\nBIT STUCK AT ONE: " << ros << " " << drawer << " " << chan << " " << gain << " " << i << "\n"); @@ -603,7 +615,7 @@ StatusCode TileCisDefaultCalibTool::writeNtuple(int runNumber, int runType, TFil t->Branch("nDAC", *m_nDAC, "nDAC[5][64][48][2]/I"); t->Branch("nDigitalErrors", *m_nDigitalErrors, "nDigitalErrors[5][64][48][2]/I"); t->Branch("chi2", *m_chi2, "chi2[5][64][48][2]/F"); - t->Branch("BitStatus", *m_BitStatus, "BitStatus[5][64][48][2][4]/s"); + t->Branch("BitStatus", *m_bitStatus, "BitStatus[5][64][48][2][4]/s"); if (!m_stuckBitsProbs.empty()) { if (m_stuckBitsProbs.retrieve().isFailure()) { diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx index 0253c1d8f645e7f54e21ead756eef73a7330d0d7..79fbe223b9f97c5c8e706eb84d337c32bd221574 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx @@ -84,30 +84,45 @@ TileDigiNoiseCalibAlg::TileDigiNoiseCalibAlg(const std::string& name, ISvcLocato m_run = 0; m_evtNr = -1; + + m_sumPed2 = new double[5][64][48][2](); + m_sumRms2 = new double[5][64][48][2](); + m_meanAmp = new double[5][64][48][2](); + m_meanAmp_ij = new double[5][64][48][48][2](); + m_evt = new int[5][64][48][2](); + m_ros = new uint8_t[5][64][48][2](); + m_drawer = new uint8_t[5][64][48][2](); + m_channel = new uint8_t[5][64][48][2](); + m_gain = new bool[5][64][48][2](); + m_ped = new float[5][64][48][2](); + m_lfn = new float[5][64][48][2](); + m_hfn = new float[5][64][48][2](); + m_noise_cov = new float[5][64][2](); + m_auto_corr = new float[5][64][48][2][36](); } TileDigiNoiseCalibAlg::~TileDigiNoiseCalibAlg() { + + delete[] m_sumPed2; + delete[] m_sumRms2; + delete[] m_meanAmp; + delete[] m_meanAmp_ij; + delete[] m_evt; + delete[] m_ros; + delete[] m_drawer; + delete[] m_channel; + delete[] m_gain; + delete[] m_ped; + delete[] m_lfn; + delete[] m_hfn; + delete[] m_noise_cov; + delete[] m_auto_corr; } /// Only array initialization is done here /// All the helpers initialization is done at the first event StatusCode TileDigiNoiseCalibAlg::initialize() { - memset(m_SumPed2, 0, sizeof(m_SumPed2)); - memset(m_SumRms2, 0, sizeof(m_SumRms2)); - memset(m_MeanAmp, 0, sizeof(m_MeanAmp)); - memset(m_MeanAmp_ij, 0, sizeof(m_MeanAmp_ij)); - memset(m_evt, 0, sizeof(m_evt)); - memset(m_ros, 0, sizeof(m_ros)); - memset(m_drawer, 0, sizeof(m_drawer)); - memset(m_channel, 0, sizeof(m_channel)); - memset(m_gain, 0, sizeof(m_gain)); - memset(m_ped, 0, sizeof(m_ped)); - memset(m_lfn, 0, sizeof(m_lfn)); - memset(m_hfn, 0, sizeof(m_hfn)); - memset(m_noise_cov, 0, sizeof(m_noise_cov)); - memset(m_auto_corr, 0, sizeof(m_auto_corr)); - CHECK( m_dqStatusKey.initialize() ); if (!m_eventInfoKey.key().empty()) { @@ -436,7 +451,7 @@ StatusCode TileDigiNoiseCalibAlg::fillDigits (const TileDQstatus* theDQstatus) { } if (dsize > 0) { m_ped[ros][drawer][chan][gain] += vdigits[0]; - m_SumPed2[ros][drawer][chan][gain] += vdigits[0] * vdigits[0]; + m_sumPed2[ros][drawer][chan][gain] += vdigits[0] * vdigits[0]; if (dsize > 1) { m_evt[ros][drawer][chan][gain]++; @@ -444,7 +459,7 @@ StatusCode TileDigiNoiseCalibAlg::fillDigits (const TileDQstatus* theDQstatus) { rmssamp = rmssamp / dsize - meansamp * meansamp; rmssamp = (rmssamp > 0.0) ? sqrt(rmssamp * dsize / (dsize - 1)) : 0.0; m_hfn[ros][drawer][chan][gain] += rmssamp; - m_SumRms2[ros][drawer][chan][gain] += rmssamp * rmssamp; + m_sumRms2[ros][drawer][chan][gain] += rmssamp * rmssamp; } } @@ -460,9 +475,9 @@ StatusCode TileDigiNoiseCalibAlg::fillDigits (const TileDQstatus* theDQstatus) { for (int sample = 0; sample < m_nSamples; ++sample) { for (unsigned int gain = 0; gain < TileCalibUtils::MAX_GAIN; ++gain) { for (unsigned int chan_i = 0; chan_i < TileCalibUtils::MAX_CHAN; ++chan_i) { - m_MeanAmp[ros][drawer][chan_i][gain] += mean_tmp[chan_i][sample][gain]; + m_meanAmp[ros][drawer][chan_i][gain] += mean_tmp[chan_i][sample][gain]; for (unsigned int chan_j = 0; chan_j < TileCalibUtils::MAX_CHAN; ++chan_j) - m_MeanAmp_ij[ros][drawer][chan_i][chan_j][gain] += mean_tmp[chan_i][sample][gain] * mean_tmp[chan_j][sample][gain]; + m_meanAmp_ij[ros][drawer][chan_i][chan_j][gain] += mean_tmp[chan_i][sample][gain] * mean_tmp[chan_j][sample][gain]; } } } @@ -508,8 +523,8 @@ void TileDigiNoiseCalibAlg::finalDigits() { m_hfn[ros][drawer][chan][gain] /= nev; if (nev > 1) { - double PedRMS = m_SumPed2[ros][drawer][chan][gain] / nev - Ped * Ped; - PedRMS = m_SumPed2[ros][drawer][chan][gain] / nev - Ped * Ped; + double PedRMS = m_sumPed2[ros][drawer][chan][gain] / nev - Ped * Ped; + PedRMS = m_sumPed2[ros][drawer][chan][gain] / nev - Ped * Ped; PedRMS = (PedRMS > 0.0) ? sqrt(PedRMS * nev / (nev - 1)) : 0.0; m_lfn[ros][drawer][chan][gain] = PedRMS; } @@ -547,9 +562,9 @@ void TileDigiNoiseCalibAlg::finalDigits() { //replace m_evtNr with sqrt(m_evt[ch_i]*m_evt[ch_j]) for (unsigned int chan_i = 0; chan_i < TileCalibUtils::MAX_CHAN; ++chan_i) { - m_MeanAmp[ros][drawer][chan_i][gain] /= m_evtNr * m_nSamples; + m_meanAmp[ros][drawer][chan_i][gain] /= m_evtNr * m_nSamples; for (unsigned int chan_j = 0; chan_j < TileCalibUtils::MAX_CHAN; ++chan_j) - m_MeanAmp_ij[ros][drawer][chan_i][chan_j][gain] /= m_evtNr * m_nSamples; + m_meanAmp_ij[ros][drawer][chan_i][chan_j][gain] /= m_evtNr * m_nSamples; } double covar[48][48]; @@ -558,7 +573,7 @@ void TileDigiNoiseCalibAlg::finalDigits() { for (unsigned int chan_i = 0; chan_i < TileCalibUtils::MAX_CHAN; ++chan_i) { for (unsigned int chan_j = 0; chan_j < TileCalibUtils::MAX_CHAN; ++chan_j) { - covar[chan_i][chan_j] = m_MeanAmp_ij[ros][drawer][chan_i][chan_j][gain] - m_MeanAmp[ros][drawer][chan_i][gain] * m_MeanAmp[ros][drawer][chan_j][gain]; + covar[chan_i][chan_j] = m_meanAmp_ij[ros][drawer][chan_i][chan_j][gain] - m_meanAmp[ros][drawer][chan_i][gain] * m_meanAmp[ros][drawer][chan_j][gain]; if (chan_j < chan_i) { mean_cov_ij += covar[chan_i][chan_j]; //LF: we take C_ij with its sign diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx index 6f02a6afcbf87619bf1f7d057ac3a979e99ceec1..8c7bcb34cdfcb5aeb425625c1db5d93d7be690fa 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx @@ -131,8 +131,6 @@ TileLaserTimingTool::TileLaserTimingTool(const std::string& type, const std::str declareInterface<ITileCalibTool>( this ); declareProperty("TileCondToolTiming", m_tileToolTiming); - //declareProperty("RawChannelContainer", m_rawChannelContainerName = "TileRawChannelFit"); - //declareProperty("DigitsContainer", m_digitsContainerName = "TileDigitsCnt"); declareProperty("NtupleID", m_ntupleID = "h3000"); declareProperty("FiberLightSpeed", m_fiberLightSpeed); declareProperty("NSamples", m_nSamples = 9); diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx index 3bcb7a30d210d53bfc5a162abc0a3adf63e60069..799042d8ab323bd38983cccc3af4e8f7ed7fb5e2 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx @@ -107,64 +107,112 @@ TileRawChNoiseCalibAlg::TileRawChNoiseCalibAlg(const std::string& name, ISvcLoca m_fillidx=false; + m_histAmp = new TH1F*[RCnum][5][64][48][2](); + m_histCellAmp = new TH1F*[2][64][4][17][6](); + m_evt = new int[5][64][48][2](); + m_ros = new uint8_t[5][64][48][2](); + m_drawer = new uint8_t[5][64][48][2](); + m_channel = new uint8_t[5][64][48][2](); + m_gain = new bool[5][64][48][2](); + m_rc_mean = new float[RCnum][5][64][48][2](); + m_rc_sigma = new float[RCnum][5][64][48][2](); + m_rc_av = new float[RCnum][5][64][48][2](); + m_rc_rms = new float[RCnum][5][64][48][2](); + m_rc_skewness = new float[RCnum][5][64][48][2](); + m_rc_kurtosis = new float[RCnum][5][64][48][2](); + m_rc_mean_err = new float[RCnum][5][64][48][2](); + m_rc_sigma_err = new float[RCnum][5][64][48][2](); + m_rc_chi2 = new float[RCnum][5][64][48][2](); + m_rc_ndf = new float[RCnum][5][64][48][2](); + m_rc_probC2 = new float[RCnum][5][64][48][2](); + m_rc_ggpar = new float[RCnum][5][64][48][2][8](); + m_rc_gsigma1 = new float[RCnum][5][64][48][2](); + m_rc_gsigma2 = new float[RCnum][5][64][48][2](); + m_rc_gnorm = new float[RCnum][5][64][48][2](); + m_rc_gchi2 = new float[RCnum][5][64][48][2](); + m_rc_gerrsigma1= new float[RCnum][5][64][48][2](); + m_rc_gerrsigma2 = new float[RCnum][5][64][48][2](); + m_rc_gerrnorm = new float[RCnum][5][64][48][2](); + m_rc_gcorrsigma1sigma2 = new float[RCnum][5][64][48][2](); + + m_side = new bool[2][64][4][17][6](); + m_phi = new uint8_t[2][64][4][17][6](); + m_sample = new uint8_t[2][64][4][17][6](); + m_tower = new uint8_t[2][64][4][17][6](); + m_gg = new uint8_t[2][64][4][17][6](); + m_ecell_av = new float[2][64][4][17][6](); + m_ecell_rms= new float[2][64][4][17][6](); + m_ecell_hash= new uint32_t[2][64][4][17](); + + m_cell_nch = new int[2][64][4][17][2](); + m_ecell_ene = new float[2][64][4][17][2](); + m_ggpar = new float[2][64][4][17][6][8](); + m_gsigma1 = new float[2][64][4][17][6](); + m_gsigma2 = new float[2][64][4][17][6](); + m_gnorm = new float[2][64][4][17][6](); + m_gchi2 = new float[2][64][4][17][6](); + m_gerrsigma1 = new float[2][64][4][17][6](); + m_gerrsigma2 = new float[2][64][4][17][6](); + m_gerrnorm = new float[2][64][4][17][6](); + m_gcorrsigma1sigma2 = new float[2][64][4][17][6](); } TileRawChNoiseCalibAlg::~TileRawChNoiseCalibAlg() -{ } +{ + //delete[] m_histAmp; + //delete[] m_histCellAmp; + delete[] m_evt; + delete[] m_ros; + delete[] m_drawer; + delete[] m_channel; + delete[] m_gain; + delete[] m_rc_mean; + delete[] m_rc_sigma; + delete[] m_rc_av; + delete[] m_rc_rms; + delete[] m_rc_skewness; + delete[] m_rc_kurtosis; + delete[] m_rc_mean_err; + delete[] m_rc_sigma_err; + delete[] m_rc_chi2; + delete[] m_rc_ndf; + delete[] m_rc_probC2; + delete[] m_rc_ggpar; + delete[] m_rc_gsigma1; + delete[] m_rc_gsigma2; + delete[] m_rc_gnorm; + delete[] m_rc_gchi2; + delete[] m_rc_gerrsigma1; + delete[] m_rc_gerrsigma2; + delete[] m_rc_gerrnorm; + delete[] m_rc_gcorrsigma1sigma2; + + delete[] m_side; + delete[] m_phi; + delete[] m_sample; + delete[] m_tower; + delete[] m_gg; + delete[] m_ecell_av; + delete[] m_ecell_rms; + delete[] m_ecell_hash; + + delete[] m_cell_nch; + delete[] m_ecell_ene; + delete[] m_ggpar; + delete[] m_gsigma1; + delete[] m_gsigma2; + delete[] m_gnorm; + delete[] m_gchi2; + delete[] m_gerrsigma1; + delete[] m_gerrsigma2; + delete[] m_gerrnorm; + delete[] m_gcorrsigma1sigma2; +} /// Only array initialization is done here /// All the helpers initialization is done at the first event StatusCode TileRawChNoiseCalibAlg::initialize() { - memset(m_rc_mean ,0, sizeof(m_rc_mean )); - memset(m_rc_av ,0, sizeof(m_rc_av )); - memset(m_rc_rms ,0, sizeof(m_rc_rms )); - memset(m_rc_kurtosis ,0, sizeof(m_rc_kurtosis )); - memset(m_rc_skewness ,0, sizeof(m_rc_skewness )); - memset(m_rc_sigma ,0, sizeof(m_rc_sigma )); - memset(m_rc_mean_err ,0, sizeof(m_rc_mean_err )); - memset(m_rc_sigma_err ,0, sizeof(m_rc_sigma_err )); - memset(m_rc_chi2 ,0, sizeof(m_rc_chi2 )); - memset(m_rc_ndf ,0, sizeof(m_rc_ndf )); - memset(m_rc_probC2 ,0, sizeof(m_rc_probC2 )); - memset(m_ros ,0, sizeof(m_ros )); - memset(m_drawer ,0, sizeof(m_drawer )); - memset(m_channel ,0, sizeof(m_channel )); - memset(m_gain ,0, sizeof(m_gain )); - - memset(m_rc_ggpar ,0, sizeof(m_rc_ggpar )); - memset(m_rc_gsigma1 ,0, sizeof(m_rc_gsigma1 )); - memset(m_rc_gsigma2 ,0, sizeof(m_rc_gsigma2 )); - memset(m_rc_gnorm ,0, sizeof(m_rc_gnorm )); - memset(m_rc_gchi2 ,0, sizeof(m_rc_gchi2 )); - memset(m_rc_gerrsigma1,0, sizeof(m_rc_gerrsigma1)); - memset(m_rc_gerrnorm ,0, sizeof(m_rc_gerrnorm )); - memset(m_rc_gerrsigma2,0, sizeof(m_rc_gerrsigma2)); - memset(m_rc_gcorrsigma1sigma2 ,0, sizeof(m_rc_gcorrsigma1sigma2 )); - - - memset(m_ecell_av ,0, sizeof(m_ecell_av )); - memset(m_ecell_rms ,0, sizeof(m_ecell_rms )); - memset(m_ecell_hash ,0xFF, sizeof(m_ecell_hash )); - memset(m_side ,0, sizeof(m_side )); - memset(m_phi ,0, sizeof(m_phi )); - memset(m_sample ,0, sizeof(m_sample )); - memset(m_tower ,0, sizeof(m_tower )); - memset(m_gg ,0, sizeof(m_gg )); - memset(m_ggpar ,0, sizeof(m_ggpar )); - memset(m_gsigma1 ,0, sizeof(m_gsigma1 )); - memset(m_gsigma2 ,0, sizeof(m_gsigma2 )); - memset(m_gnorm ,0, sizeof(m_gnorm )); - memset(m_gchi2 ,0, sizeof(m_gchi2 )); - memset(m_gerrsigma1 ,0, sizeof(m_gerrsigma1 )); - memset(m_gerrnorm ,0, sizeof(m_gerrnorm )); - memset(m_gerrsigma2 ,0, sizeof(m_gerrsigma2 )); - memset(m_gcorrsigma1sigma2 ,0, sizeof(m_gcorrsigma1sigma2 )); -// memset(gcorrsigma1norm ,0, sizeof(gcorrsigma1norm)); -// memset(gcorrsigma2norm ,0, sizeof(gcorrsigma2norm)); - - memset(m_histAmp ,0, sizeof(m_histAmp )); - int nbin = 151; float binwidth[2] = { 0.125, 0.25 }; // in ADC float xmax[2] = { (float) nbin * binwidth[0] / 2.F, (float) nbin * binwidth[1] / 2.F }; // in ADC @@ -192,7 +240,6 @@ StatusCode TileRawChNoiseCalibAlg::initialize() { nbin = 301; float cellbin[2] = { 80., 2.5 }; //in MeV float xcellmax[2] = { (float) nbin * cellbin[0] / 2.F, (float) nbin * cellbin[1] / 2.F }; //in MeV - memset(m_histCellAmp ,0, sizeof(m_histCellAmp )); for (int side = 0; side < 2; side++) { for (unsigned int drawer = 0; drawer < TileCalibUtils::MAX_DRAWER; ++drawer) { @@ -304,8 +351,8 @@ StatusCode TileRawChNoiseCalibAlg::execute() { StoreRunInfo(dqStatus); // done only once } - memset(m_ecell_ene ,0, sizeof(m_ecell_ene )); - memset(m_cell_nch ,0, sizeof(m_cell_nch )); + memset(m_ecell_ene ,0, 2 * sizeof( *m_ecell_ene )); + memset(m_cell_nch ,0, 2 * sizeof( *m_cell_nch )); m_cispar = dqStatus->cispar(); if (m_evtNr % 1000 == 0) ATH_MSG_INFO( " events processed so far " << m_evtNr ); diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTOFTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTOFTool.cxx index 7ee8a4568328a9e978d88adabd5e8d1a63fb95f3..828e8ef79cedff3a16eca9a298e18a5ae2b5c2fe 100755 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTOFTool.cxx +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTOFTool.cxx @@ -22,7 +22,6 @@ TileTOFTool::TileTOFTool(const std::string& type, const std::string& name, const IInterface* pParent ) : AthAlgTool( type, name, pParent ), m_tileID(nullptr), - m_TimeCor(), m_LBA_LBC(), m_LBA_EBA(), m_LBC_EBC(), @@ -31,14 +30,22 @@ TileTOFTool::TileTOFTool(const std::string& type, const std::string& name, const m_Nebc(), m_LA_EA(0), m_LA_LC(0), - m_LA_EC(0), - m_tcor(), - m_Npair() + m_LA_EC(0) { declareInterface<ITileCalibTool>( this ); + + m_timeCor = new float[4][64](); + m_tcor = new float[4][32][32](); + m_nPair = new int[4][32][32](); } -TileTOFTool::~TileTOFTool() {} +TileTOFTool::~TileTOFTool() { + + delete[] m_timeCor; + delete[] m_tcor; + delete[] m_nPair; + +} /////////////////////////////////////////////////////////// @@ -133,7 +140,7 @@ StatusCode TileTOFTool::execute() for(int s=0; s<4; s++) { for(int k=0; k<32; k++) { for(int l=0; l<32; l++) { - TIMECOR(k,l+32,s,s, m_Npair[s][k][l], m_tcor[s][k][l]); + TIMECOR(k,l+32,s,s, m_nPair[s][k][l], m_tcor[s][k][l]); } } } @@ -159,8 +166,8 @@ StatusCode TileTOFTool::finalizeCalculations() for(int s=0; s<4; s++) { for(int k=0; k<32; k++) { for(int l=0; l<32; l++) { - if(m_Npair[s][k][l]!=0) { - m_tcor[s][k][l] = m_tcor[s][k][l]/m_Npair[s][k][l]; + if(m_nPair[s][k][l]!=0) { + m_tcor[s][k][l] = m_tcor[s][k][l]/m_nPair[s][k][l]; } } }} @@ -176,7 +183,7 @@ StatusCode TileTOFTool::finalizeCalculations() for(int s=0; s<4; s++){ if(m_Neba[s]!=0) { m_LBA_EBA[s] = m_LBA_EBA[s]/m_Neba[s]; - if(m_Npair[0][15][s+14]>5) { + if(m_nPair[0][15][s+14]>5) { m_LA_EA = m_LA_EA + m_tcor[0][15][s+14] - m_LBA_EBA[s]; p0++; } @@ -184,7 +191,7 @@ StatusCode TileTOFTool::finalizeCalculations() if(m_Nlbc[s]!=0) { m_LBA_LBC[s] = m_LBA_LBC[s]/m_Nlbc[s]; - if(m_Npair[2][15][s+14]>5) { + if(m_nPair[2][15][s+14]>5) { m_LA_LC = m_LA_LC + m_tcor[2][15][s+14] - m_LBA_LBC[s]; p2++; } @@ -192,7 +199,7 @@ StatusCode TileTOFTool::finalizeCalculations() if(m_Nebc[s]!=0) { m_LBC_EBC[s] = m_LBC_EBC[s]/m_Nlbc[s]; - if(m_Npair[2][15][s+14]>5) { + if(m_nPair[2][15][s+14]>5) { m_LA_EC = m_LA_EC + m_LA_LC + m_tcor[3][15][s+14] - m_LBC_EBC[s]; p3++; } @@ -206,15 +213,15 @@ StatusCode TileTOFTool::finalizeCalculations() // Calculation of time offsets wrt module 16 of each partition int n2[4][64] = {{0}}; - memset( m_TimeCor, 0, sizeof(m_TimeCor) ); + memset( m_timeCor, 0, 2 * sizeof(*m_timeCor) ); for(int s=0; s<4; s++){ - m_TimeCor[s][15] = 0.; n2[s][15] = 1; + m_timeCor[s][15] = 0.; n2[s][15] = 1; for(int k=12; k<20; k++) { - if(m_Npair[s][15][k]>5) { - m_TimeCor[s][k+32] = -m_tcor[s][15][k]; + if(m_nPair[s][15][k]>5) { + m_timeCor[s][k+32] = -m_tcor[s][15][k]; n2[s][k+32]=1; } } @@ -223,155 +230,155 @@ StatusCode TileTOFTool::finalizeCalculations() for(int k=12; k<15; k++) { for(int l=16; l<20; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][k] += m_TimeCor[s][l+32] + m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][k] += m_timeCor[s][l+32] + m_tcor[s][k][l]; n2[s][k]++; } } if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int k=12; k<16; k++) { for(int l=20; l<24; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][l+32] += m_TimeCor[s][k] - m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][l+32] += m_timeCor[s][k] - m_tcor[s][k][l]; n2[s][l+32]++; } } } for(int k=52; k<56; k++) { if(n2[s][k]>0) { - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } } for(int k=8; k<12; k++) { for(int l=20; l<24; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][k] += m_TimeCor[s][l+32] + m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][k] += m_timeCor[s][l+32] + m_tcor[s][k][l]; n2[s][k]++; } } if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int k=8; k<12; k++) { for(int l=24; l<28; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][l+32] += m_TimeCor[s][k] - m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][l+32] += m_timeCor[s][k] - m_tcor[s][k][l]; n2[s][l+32]++; } } } for(int k=56; k<60; k++) { if(n2[s][k]>0) { - m_TimeCor[s][k] /=n2[s][k]; + m_timeCor[s][k] /=n2[s][k]; } } for(int k=0; k<8; k++) { for(int l=24; l<28; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][k] += m_TimeCor[s][l+32] + m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][k] += m_timeCor[s][l+32] + m_tcor[s][k][l]; n2[s][k]++; } } if (n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int k=4; k<8; k++) { for(int l=28; l<32; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][l+32] += m_TimeCor[s][k] - m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][l+32] += m_timeCor[s][k] - m_tcor[s][k][l]; n2[s][l+32]++; } } } for(int k=60; k<64; k++) { if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } // Path to calculate all time offsets for modules in region x < 0 for(int k=16; k<20; k++) { for(int l=12; l<16; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][k] += m_TimeCor[s][l+32] + m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][k] += m_timeCor[s][l+32] + m_tcor[s][k][l]; n2[s][k]++; } } if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int k=16; k<20; k++) { for(int l=8; l<12; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][l+32] += m_TimeCor[s][k] - m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][l+32] += m_timeCor[s][k] - m_tcor[s][k][l]; n2[s][l+32]++; } } } for(int k=40; k<44; k++) { if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int k=20; k<24; k++){ for(int l=8; l<12; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][k] += m_TimeCor[s][l+32] + m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][k] += m_timeCor[s][l+32] + m_tcor[s][k][l]; n2[s][k]++; } } if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int k=20; k<24; k++) { for(int l=4; l<8; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][l+32] += m_TimeCor[s][k] - m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][l+32] += m_timeCor[s][k] - m_tcor[s][k][l]; n2[s][l+32]++; } } } for(int k=36; k<40; k++) { if(n2[s][k]>0) { - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } } for(int k=24; k<32; k++) { for(int l=4; l<8; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][k] += m_TimeCor[s][l+32] + m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][k] += m_timeCor[s][l+32] + m_tcor[s][k][l]; n2[s][k]++; } } if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int k=24; k<28; k++) { for(int l=0; l<4; l++) { - if(m_Npair[s][k][l]>5) { - m_TimeCor[s][l+32] += m_TimeCor[s][k] - m_tcor[s][k][l]; + if(m_nPair[s][k][l]>5) { + m_timeCor[s][l+32] += m_timeCor[s][k] - m_tcor[s][k][l]; n2[s][l+32]++; } } } for(int k=32; k<36; k++) { if(n2[s][k]>0) - m_TimeCor[s][k] /= n2[s][k]; + m_timeCor[s][k] /= n2[s][k]; } for(int l=0; l<64; l++) { - ATH_MSG_INFO ( "Partition: " << s << " Module: " << l+1 << " TimeCor: " << m_TimeCor[s][l] << " n: " << n2[s][l] ); + ATH_MSG_INFO ( "Partition: " << s << " Module: " << l+1 << " TimeCor: " << m_timeCor[s][l] << " n: " << n2[s][l] ); } } //end of loop over different partitions @@ -383,7 +390,7 @@ StatusCode TileTOFTool::writeNtuple(int runNumber, int runType, TFile * rootFile ATH_MSG_INFO ( "writeNtuple(" << runNumber << "," << runType << "," << rootFile << ")" ); TTree *t = new TTree("TOF", "TOF"); - t->Branch("Time_Offset", m_TimeCor, "Time_Offset[4][64]/F"); + t->Branch("Time_Offset", m_timeCor, "Time_Offset[4][64]/F"); t->Branch("eba16_lba16", &m_LA_EA, "eba16_lba16/F"); t->Branch("lbc16_lba16", &m_LA_LC, "lbc16_lba16/F"); t->Branch("ebc16_lba16", &m_LA_EC, "ebc16_lba16/F"); diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx index 9ee14b0bd7ec2b2c2085c0cd850b9dce2371073b..be7e29927381bbc015cc5d9f4fc243f669a5a96f 100644 --- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx +++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx @@ -56,24 +56,6 @@ TileTriggerDefaultCalibTool::TileTriggerDefaultCalibTool(const std::string& type , m_tileID(nullptr) , m_tileCablingService(nullptr) , m_tileToolEmscale("TileCondToolEmscale") - , m_meanTile() - , m_rmsTile() - , m_meanTileDAC() - , m_rmsTileDAC() - , m_ietaTile() - , m_iphiTile() - , m_ipmtTile() - , m_nEvtTile() - , m_meanL1Calo() - , m_rmsL1Calo() - , m_meanL1CaloDAC() - , m_rmsL1CaloDAC() - , m_ietaL1Calo() - , m_iphiL1Calo() - , m_ipmtL1Calo() - , m_nEvtL1Calo() - , m_meanTileL1Calo() - , m_rmsTileL1Calo() , m_DACvalue(0) , m_charge(0) , m_ipmt(0) @@ -95,10 +77,50 @@ TileTriggerDefaultCalibTool::TileTriggerDefaultCalibTool(const std::string& type declareProperty("TileCondToolEmscale", m_tileToolEmscale); declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus"); // declareProperty("L1TriggerTowerTool", m_ttTool); + + m_meanTile = new float[5][64][48](); + m_rmsTile = new float[5][64][48](); + m_meanTileDAC = new float[5][64][48](); + m_rmsTileDAC = new float[5][64][48](); + m_ietaTile = new int[5][64][48](); + m_iphiTile = new int[5][64][48](); + m_ipmtTile = new int[5][64][48](); + m_nEvtTile = new int[5][64][48](); + + m_meanL1Calo = new float[5][64][48](); + m_rmsL1Calo = new float[5][64][48](); + m_meanL1CaloDAC = new float[5][64][48](); + m_rmsL1CaloDAC = new float[5][64][48](); + m_ietaL1Calo = new int[5][64][48](); + m_iphiL1Calo = new int[5][64][48](); + m_ipmtL1Calo = new int[5][64][48](); + m_nEvtL1Calo = new int[5][64][48](); + + m_meanTileL1Calo = new float[5][64][48](); + m_rmsTileL1Calo = new float[5][64][48](); } TileTriggerDefaultCalibTool::~TileTriggerDefaultCalibTool() -{} +{ + delete[] m_meanTile; + delete[] m_rmsTile; + delete[] m_meanTileDAC; + delete[] m_rmsTileDAC; + delete[] m_ietaTile; + delete[] m_iphiTile; + delete[] m_ipmtTile; + delete[] m_nEvtTile; + delete[] m_meanL1Calo; + delete[] m_rmsL1Calo; + delete[] m_meanL1CaloDAC; + delete[] m_rmsL1CaloDAC; + delete[] m_ietaL1Calo; + delete[] m_iphiL1Calo; + delete[] m_ipmtL1Calo; + delete[] m_nEvtL1Calo; + delete[] m_meanTileL1Calo; + delete[] m_rmsTileL1Calo; +} StatusCode TileTriggerDefaultCalibTool::initialize() {