1212#include < cmath>
1313#include < vector>
1414#include < map>
15+ #include " CCDB/BasicCCDBManager.h"
1516#include " Framework/ASoA.h"
1617#include " Framework/AnalysisDataModel.h"
1718#include " ReconstructionDataFormats/Vertex.h"
18- #include " Common/CCDB/EventSelectionParams.h"
19- #include " Common/DataModel/EventSelection.h"
2019#include " CommonConstants/LHCConstants.h"
2120#include " DataFormatsFIT/Triggers.h"
21+ #include " DataFormatsParameters/GRPMagField.h"
22+ #include " DataFormatsParameters/GRPObject.h"
2223
23- #include " Framework/runDataProcessing.h"
2424#include " Framework/AnalysisTask.h"
25+ #include " Framework/ASoAHelpers.h"
26+ #include " Framework/HistogramRegistry.h"
27+ #include " Framework/runDataProcessing.h"
28+ #include " Common/CCDB/EventSelectionParams.h"
29+ #include " Common/CCDB/ctpRateFetcher.h"
30+ #include " Common/DataModel/EventSelection.h"
2531#include " PWGUD/DataModel/UDTables.h"
2632#include " PWGUD/Core/UPCHelpers.h"
2733#include " PWGUD/Core/SGSelector.h"
2834
2935using namespace o2 ;
3036using namespace o2 ::framework;
3137using namespace o2 ::framework::expressions;
38+ using namespace o2 ::dataformats;
3239
3340struct SGCandProducer {
41+ Service<o2::ccdb::BasicCCDBManager> ccdb;
42+ // data inputs
43+ using CCs = soa::Join<aod::Collisions, aod::EvSels>;
44+ using CC = CCs::iterator;
45+ using BCs = soa::Join<aod::BCsWithTimestamps, aod::BcSels, aod::Run3MatchedToBCSparse>;
46+ using BC = BCs::iterator;
47+ using TCs = soa::Join<aod::Tracks, /* aod::TracksCov,*/ aod::TracksExtra, aod::TracksDCA, aod::TrackSelection,
48+ aod::pidTPCFullEl, aod::pidTPCFullMu, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr,
49+ aod::pidTPCFullDe, aod::pidTPCFullTr, aod::pidTPCFullHe, aod::pidTPCFullAl,
50+ aod::TOFSignal, aod::pidTOFbeta,
51+ aod::pidTOFFullDe, aod::pidTOFFullTr, aod::pidTOFFullHe, aod::pidTOFFullAl,
52+ aod::pidTOFFullEl, aod::pidTOFFullMu, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>;
53+ using FWs = aod::FwdTracks;
3454 // get an SGCutparHolder
3555 SGCutParHolder sameCuts = SGCutParHolder(); // SGCutparHolder
3656 Configurable<SGCutParHolder> SGCuts{" SGCuts" , {}, " SG event cuts" };
@@ -46,14 +66,15 @@ struct SGCandProducer {
4666 // Configurables to decide which tables are filled
4767 Configurable<bool > fillTrackTables{" fillTrackTables" , true , " Fill track tables" };
4868 Configurable<bool > fillFwdTrackTables{" fillFwdTrackTables" , true , " Fill forward track tables" };
49-
5069 // SG selector
5170 SGSelector sgSelector;
71+ ctpRateFetcher mRateFetcher ;
5272
5373 // data tables
5474 Produces<aod::SGCollisions> outputSGCollisions;
5575 Produces<aod::UDCollisions> outputCollisions;
5676 Produces<aod::UDCollisionsSels> outputCollisionsSels;
77+ Produces<aod::UDCollisionSelExtras> outputCollisionSelExtras;
5778 Produces<aod::UDCollsLabels> outputCollsLabels;
5879 Produces<aod::UDZdcs> outputZdcs;
5980 Produces<aod::UDZdcsReduced> udZdcsReduced;
@@ -73,19 +94,6 @@ struct SGCandProducer {
7394 " registry" ,
7495 {}};
7596
76- // data inputs
77- using CCs = soa::Join<aod::Collisions, aod::EvSels>;
78- using CC = CCs::iterator;
79- using BCs = soa::Join<aod::BCs, aod::Timestamps, aod::BcSels, aod::Run3MatchedToBCSparse>;
80- using BC = BCs::iterator;
81- using TCs = soa::Join<aod::Tracks, /* aod::TracksCov,*/ aod::TracksExtra, aod::TracksDCA, aod::TrackSelection,
82- aod::pidTPCFullEl, aod::pidTPCFullMu, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr,
83- aod::pidTPCFullDe, aod::pidTPCFullTr, aod::pidTPCFullHe, aod::pidTPCFullAl,
84- aod::TOFSignal, aod::pidTOFbeta,
85- aod::pidTOFFullDe, aod::pidTOFFullTr, aod::pidTOFFullHe, aod::pidTOFFullAl,
86- aod::pidTOFFullEl, aod::pidTOFFullMu, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>;
87- using FWs = aod::FwdTracks;
88-
8997 // function to update UDFwdTracks, UDFwdTracksExtra
9098 template <typename TFwdTrack>
9199 void updateUDFwdTrackTables (TFwdTrack const & fwdtrack, uint64_t const & bcnum)
@@ -165,6 +173,9 @@ struct SGCandProducer {
165173
166174 void init (InitContext&)
167175 {
176+ ccdb->setURL (" http://alice-ccdb.cern.ch" );
177+ ccdb->setCaching (true );
178+ ccdb->setFatalWhenNull (false );
168179 sameCuts = (SGCutParHolder)SGCuts;
169180 registry.add (" reco/Stat" , " Cut statistics; Selection criterion; Collisions" , {HistType::kTH1F , {{14 , -0.5 , 13.5 }}});
170181 }
@@ -206,7 +217,25 @@ struct SGCandProducer {
206217 return ;
207218 }
208219 registry.get <TH1>(HIST (" reco/Stat" ))->Fill (6 ., 1 .);
220+ int trs = 0 ;
221+ if (collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
222+ trs = 1 ;
223+ }
224+ int trofs = 0 ;
225+ if (collision.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
226+ trofs = 1 ;
227+ }
228+ int hmpr = 0 ;
229+ if (collision.selection_bit (o2::aod::evsel::kNoHighMultCollInPrevRof )) {
230+ hmpr = 1 ;
231+ }
209232 auto bc = collision.foundBC_as <BCs>();
233+ double ir = 0 .;
234+ const uint64_t ts = bc.timestamp ();
235+ const int runnumber = bc.runNumber ();
236+ if (bc.has_zdc ()) {
237+ ir = mRateFetcher .fetch (ccdb.service , ts, runnumber, " ZNC hadronic" ) * 1 .e -3 ;
238+ }
210239 auto newbc = bc;
211240
212241 // obtain slice of compatible BCs
@@ -229,6 +258,13 @@ struct SGCandProducer {
229258 return ;
230259 }
231260 upchelpers::FITInfo fitInfo{};
261+ uint8_t chFT0A = 0 ;
262+ uint8_t chFT0C = 0 ;
263+ uint8_t chFDDA = 0 ;
264+ uint8_t chFDDC = 0 ;
265+ uint8_t chFV0A = 0 ;
266+ int occ = 0 ;
267+ occ = collision.trackOccupancyInTimeRange ();
232268 udhelpers::getFITinfo (fitInfo, newbc, bcs, ft0s, fv0as, fdds);
233269 // update SG candidates tables
234270 int upc_flag = 0 ;
@@ -249,6 +285,7 @@ struct SGCandProducer {
249285 fitInfo.BBFT0Apf , fitInfo.BBFT0Cpf , fitInfo.BGFT0Apf , fitInfo.BGFT0Cpf ,
250286 fitInfo.BBFV0Apf , fitInfo.BGFV0Apf ,
251287 fitInfo.BBFDDApf , fitInfo.BBFDDCpf , fitInfo.BGFDDApf , fitInfo.BGFDDCpf );
288+ outputCollisionSelExtras (chFT0A, chFT0C, chFDDA, chFDDC, chFV0A, occ, ir, trs, trofs, hmpr);
252289 outputCollsLabels (collision.globalIndex ());
253290 if (newbc.has_zdc ()) {
254291 auto zdc = newbc.zdc ();
0 commit comments