@@ -41,7 +41,7 @@ double CTPRateFetcher::fetchNoPuCorr(o2::ccdb::BasicCCDBManager* ccdb, uint64_t
4141 if (runNumber < 534202 ) {
4242 return fetchCTPratesClassesNoPuCorr (timeStamp, " minbias_TVX_L0" , 3 ); // 2022
4343 } else {
44- double_t ret = fetchCTPratesClassesNoPuCorr (timeStamp, " CMTVX-B-NOPF" );
44+ double ret = fetchCTPratesClassesNoPuCorr (timeStamp, " CMTVX-B-NOPF" );
4545 if (ret == -2 .) {
4646 LOG (info) << " Trying different class" ;
4747 ret = fetchCTPratesClassesNoPuCorr (timeStamp, " CMTVX-NONE" );
@@ -77,6 +77,94 @@ int CTPRateFetcher::getRates(std::array<double, 3>& rates, o2::ccdb::BasicCCDBMa
7777 rates[2 ] = rateM;
7878 return 0 ;
7979}
80+ double CTPRateFetcher::getLumiNoPuCorr (const std::string& classname, int type)
81+ {
82+ if (classname == " zncinp" ) {
83+ return mScalers .getLumiNoPuCorr (26 , 7 );
84+ }
85+ std::vector<ctp::CTPClass>& ctpcls = mConfig .getCTPClasses ();
86+ std::vector<int > clslist = mConfig .getTriggerClassList ();
87+ int classIndex = -1 ;
88+ for (size_t i = 0 ; i < clslist.size (); i++) {
89+ if (ctpcls[i].name .find (classname) != std::string::npos) {
90+ classIndex = i;
91+ break ;
92+ }
93+ }
94+ if (classIndex == -1 ) {
95+ LOG (warn) << " Trigger class " << classname << " not found in CTPConfiguration" ;
96+ return -1 ;
97+ }
98+ return mScalers .getLumiNoPuCorr (classIndex, type);
99+ }
100+ double CTPRateFetcher::getLumiWPuCorr (const std::string& classname, int type)
101+ {
102+ std::vector<std::pair<double , double >> scals;
103+ if (classname == " zncinp" ) {
104+ scals = mScalers .getRatesForIndex (26 , 7 );
105+ } else {
106+ std::vector<ctp::CTPClass>& ctpcls = mConfig .getCTPClasses ();
107+ std::vector<int > clslist = mConfig .getTriggerClassList ();
108+ int classIndex = -1 ;
109+ for (size_t i = 0 ; i < clslist.size (); i++) {
110+ if (ctpcls[i].name .find (classname) != std::string::npos) {
111+ classIndex = i;
112+ break ;
113+ }
114+ }
115+ if (classIndex == -1 ) {
116+ LOG (warn) << " Trigger class " << classname << " not found in CTPConfiguration" ;
117+ return -1 ;
118+ }
119+ scals = mScalers .getRatesForIndex (classIndex, type);
120+ }
121+ double lumi = 0 ;
122+ for (auto const & ss : scals) {
123+ // std::cout << ss.first << " " << ss.second << " " << pileUpCorrection(ss.first/ss.second) << std::endl;
124+ lumi += pileUpCorrection (ss.first / ss.second ) * ss.second ;
125+ }
126+ return lumi;
127+ }
128+ double CTPRateFetcher::getLumi (const std::string& classname, int type, int puCorr)
129+ {
130+ if (puCorr) {
131+ return getLumiWPuCorr (classname, type);
132+ } else {
133+ return getLumiNoPuCorr (classname, type);
134+ }
135+ }
136+
137+ double CTPRateFetcher::getLumi (o2::ccdb::BasicCCDBManager* ccdb, int runNumber, const std::string sourceName, int puCorr)
138+ {
139+ // setupRun(runNumber, ccdb, timeStamp, 1);
140+ if (sourceName.find (" ZNC" ) != std::string::npos) {
141+ if (runNumber < 544448 ) {
142+ return getLumi (" zncinp" , 1 , puCorr) / (sourceName.find (" hadronic" ) != std::string::npos ? 28 . : 1 .);
143+ } else {
144+ return getLumi (" C1ZNC-B-NOPF-CRU" , 6 , puCorr) / (sourceName.find (" hadronic" ) != std::string::npos ? 28 . : 1 .);
145+ }
146+ } else if (sourceName == " T0CE" ) {
147+ return getLumi (" CMTVXTCE-B-NOPF" , 1 , puCorr);
148+ } else if (sourceName == " T0SC" ) {
149+ return getLumi (" CMTVXTSC-B-NOPF" , 1 , puCorr);
150+ } else if (sourceName == " T0VTX" ) {
151+ if (runNumber < 534202 ) {
152+ return getLumi (" minbias_TVX_L0" , 3 , puCorr); // 2022
153+ } else {
154+ double ret = getLumi (" CMTVX-B-NOPF" , 1 , puCorr);
155+ if (ret == -1 .) {
156+ LOG (info) << " Trying different class" ;
157+ ret = getLumi (" CMTVX-NONE" , 1 , puCorr);
158+ if (ret < 0 ) {
159+ LOG (fatal) << " None of the classes used for lumi found" ;
160+ }
161+ }
162+ return ret;
163+ }
164+ }
165+ LOG (error) << " CTP Lumi for " << sourceName << " not available" ;
166+ return 0 ;
167+ }
80168//
81169double CTPRateFetcher::fetchCTPratesClasses (uint64_t timeStamp, const std::string& className, int inputType)
82170{
0 commit comments