@@ -61,6 +61,23 @@ void CTPRateFetcher::updateScalers(ctp::CTPRunScalers& scalers)
6161 mScalers .convertRawToO2 ();
6262}
6363//
64+ int CTPRateFetcher::getRates (std::array<double , 3 >& rates, o2::ccdb::BasicCCDBManager* ccdb, int runNumber, const std::string sourceName) // rates at start,stop and middle of the run
65+ {
66+ setupRun (runNumber, ccdb, 0 , 1 );
67+ mOrbit = 1 ;
68+ mOutsideLimits = 1 ;
69+ auto orbitlimits = mScalers .getOrbitLimit ();
70+ // std::cout << "1st orbit:" << orbitlimits.first << " last:" << orbitlimits.second << " Middle:" << (orbitlimits.first + orbitlimits.second)/2 << std::endl;
71+ double rate0 = fetch (ccdb, orbitlimits.first , mRunNumber , sourceName);
72+ double rateLast = fetch (ccdb, orbitlimits.second , mRunNumber , sourceName);
73+ double rateM = fetch (ccdb, (orbitlimits.first + orbitlimits.second ) / 2 , mRunNumber , sourceName);
74+ // std::cout << rate0 << " " << rateLast << " " << rateM << std::endl;
75+ rates[0 ] = rate0;
76+ rates[1 ] = rateLast;
77+ rates[2 ] = rateM;
78+ return 0 ;
79+ }
80+ //
6481double CTPRateFetcher::fetchCTPratesClasses (uint64_t timeStamp, const std::string& className, int inputType)
6582{
6683 auto triggerRate = fetchCTPratesClassesNoPuCorr (timeStamp, className, inputType);
@@ -84,14 +101,23 @@ double CTPRateFetcher::fetchCTPratesClassesNoPuCorr(uint64_t timeStamp, const st
84101 LOG (warn) << " Trigger class " << className << " not found in CTPConfiguration" ;
85102 return -2 .;
86103 }
87- auto rate{mScalers .getRateGivenT (timeStamp * 1 .e -3 , classIndex, inputType, 1 )};
88- return rate.second ;
104+ if (mOrbit ) {
105+ auto rate{mScalers .getRate ((uint32_t )timeStamp, classIndex, inputType, mOutsideLimits )};
106+ return rate.second ;
107+ } else {
108+ auto rate{mScalers .getRateGivenT (timeStamp * 1 .e -3 , classIndex, inputType, mOutsideLimits )};
109+ return rate.second ;
110+ }
89111}
90112double CTPRateFetcher::fetchCTPratesInputs (uint64_t timeStamp, int input)
91113{
92114 std::vector<ctp::CTPScalerRecordO2>& recs = mScalers .getScalerRecordO2 ();
93115 if (recs[0 ].scalersInps .size () == 48 ) {
94- return pileUpCorrection (mScalers .getRateGivenT (timeStamp * 1 .e -3 , input, 7 , 1 ).second );
116+ if (mOrbit ) {
117+ return pileUpCorrection (mScalers .getRate ((uint32_t )timeStamp, input, 7 , mOutsideLimits ).second );
118+ } else {
119+ return pileUpCorrection (mScalers .getRateGivenT (timeStamp * 1 .e -3 , input, 7 , mOutsideLimits ).second );
120+ }
95121 } else {
96122 LOG (error) << " Inputs not available" ;
97123 return -1 .;
@@ -101,7 +127,11 @@ double CTPRateFetcher::fetchCTPratesInputsNoPuCorr(uint64_t timeStamp, int input
101127{
102128 std::vector<ctp::CTPScalerRecordO2>& recs = mScalers .getScalerRecordO2 ();
103129 if (recs[0 ].scalersInps .size () == 48 ) {
104- return mScalers .getRateGivenT (timeStamp * 1 .e -3 , input, 7 , 1 ).second ;
130+ if (mOrbit ) {
131+ return mScalers .getRate ((uint32_t )timeStamp, input, 7 , mOutsideLimits ).second ;
132+ } else {
133+ return mScalers .getRateGivenT (timeStamp * 1 .e -3 , input, 7 , mOutsideLimits ).second ; // qc flag implemented only for time
134+ }
105135 } else {
106136 LOG (error) << " Inputs not available" ;
107137 return -1 .;
@@ -127,13 +157,13 @@ void CTPRateFetcher::setupRun(int runNumber, o2::ccdb::BasicCCDBManager* ccdb, u
127157 return ;
128158 }
129159 mRunNumber = runNumber;
130- LOG (debug) << " Setting up CTP scalers for run " << mRunNumber ;
131- std::map<string, string> metadata;
132- auto ptrLHCIFdata = ccdb->getSpecific <parameters::GRPLHCIFData>(" GLO/Config/GRPLHCIF" , timeStamp, metadata);
160+ LOG (info) << " Setting up CTP scalers for run " << mRunNumber ;
161+ auto ptrLHCIFdata = ccdb->getSpecific <parameters::GRPLHCIFData>(" GLO/Config/GRPLHCIF" , timeStamp);
133162 if (ptrLHCIFdata == nullptr ) {
134163 LOG (fatal) << " GRPLHCIFData not in database, timestamp:" << timeStamp;
135164 }
136165 mLHCIFdata = *ptrLHCIFdata;
166+ std::map<string, string> metadata;
137167 metadata[" runNumber" ] = std::to_string (mRunNumber );
138168 auto ptrConfig = ccdb->getSpecific <ctp::CTPConfiguration>(" CTP/Config/Config" , timeStamp, metadata);
139169 if (ptrConfig == nullptr ) {
0 commit comments