@@ -44,7 +44,6 @@ namespace analysis
4444{
4545namespace trackextension
4646{
47- constexpr long run3grp_timestamp = (1619781650000 + 1619781529000 ) / 2 ;
4847const char * ccdbpath_lut = " GLO/Param/MatLUT" ;
4948const char * ccdbpath_geo = " GLO/Config/Geometry" ;
5049const char * ccdbpath_grp = " GLO/GRP/GRP" ;
@@ -82,39 +81,32 @@ struct TrackExtension {
8281 {
8382 using namespace analysis ::trackextension;
8483
85- int lastCollId = -1 ;
8684 for (auto & track : tracks) {
8785 std::array<float , 2 > dca{1e10f, 1e10f};
8886 if (track.has_collision ()) {
8987 if (track.trackType () == o2::aod::track::TrackTypeEnum::Run2Track && track.itsChi2NCl () != 0 .f && track.tpcChi2NCl () != 0 .f && std::abs (track.x ()) < 10 .f ) {
90- if (lastCollId != track.collisionId ()) {
91- auto bc = track.collision_as <aod::Collisions>().bc_as <aod::BCsWithTimestamps>();
92- if (mRunNumber != bc.runNumber ()) {
93- o2::parameters::GRPObject* grpo = ccdb->getForTimeStamp <o2::parameters::GRPObject>(ccdbpath_grp, bc.timestamp ());
94- if (grpo != nullptr ) {
95- mMagField = grpo->getNominalL3Field ();
96- LOGF (info, " Setting magnetic field to %f kG for run %d" , mMagField , bc.runNumber ());
97- } else {
98- LOGF (fatal, " GRP object is not available in CCDB for run=%d at timestamp=%llu" , bc.runNumber (), bc.timestamp ());
99- }
100- mRunNumber = bc.runNumber ();
88+ auto bc = track.collision_as <aod::Collisions>().bc_as <aod::BCsWithTimestamps>();
89+ if (mRunNumber != bc.runNumber ()) {
90+ o2::parameters::GRPObject* grpo = ccdb->getForTimeStamp <o2::parameters::GRPObject>(ccdbpath_grp, bc.timestamp ());
91+ if (grpo != nullptr ) {
92+ mMagField = grpo->getNominalL3Field ();
93+ LOGF (info, " Setting magnetic field to %f kG for run %d" , mMagField , bc.runNumber ());
94+ } else {
95+ LOGF (fatal, " GRP object is not available in CCDB for run=%d at timestamp=%llu" , bc.runNumber (), bc.timestamp ());
10196 }
102- lastCollId = track. collisionId ();
97+ mRunNumber = bc. runNumber ();
10398 }
10499 auto trackPar = getTrackPar (track);
105100 auto const & collision = track.collision ();
106101 trackPar.propagateParamToDCA ({collision.posX (), collision.posY (), collision.posZ ()}, mMagField , &dca);
107102 }
108103 }
109104 extendedTrackQuantities (dca[0 ], dca[1 ]);
110-
111- // TODO: add realtive pt resolution sigma(pt)/pt \approx pt * sigma(1/pt)
112- // TODO: add geometrical length / fiducial volume
113105 }
114106 }
115107 PROCESS_SWITCH (TrackExtension, processRun2, " Process Run2 track extension task" , true );
116108
117- void processRun3 (aod::FullTracks const & tracks, aod::Collisions const &, aod::BCsWithTimestamps const &)
109+ void processRun3 (aod::Tracks const & tracks, aod::Collisions const &, aod::BCsWithTimestamps const &)
118110 {
119111 using namespace analysis ::trackextension;
120112
@@ -127,25 +119,21 @@ struct TrackExtension {
127119 /* when a new run (Run3) is processed */
128120 o2::base::Propagator::MatCorrType matCorr = o2::base::Propagator::MatCorrType::USEMatCorrLUT;
129121
130- int lastCollId = -1 ;
131122 for (auto & track : tracks) {
132123 std::array<float , 2 > dca{1e10f, 1e10f};
133124 if (track.has_collision ()) {
134125 if (track.trackType () == o2::aod::track::TrackTypeEnum::Track) {
135- if (lastCollId != track.collisionId ()) {
136- auto bc = track.collision_as <aod::Collisions>().bc_as <aod::BCsWithTimestamps>();
137- if (mRunNumber != bc.runNumber ()) {
138- auto grpo = ccdb->getForTimeStamp <o2::parameters::GRPObject>(ccdbpath_grp, bc.timestamp ());
139- if (grpo != nullptr ) {
140- o2::base::Propagator::initFieldFromGRP (grpo);
141- o2::base::Propagator::Instance ()->setMatLUT (lut);
142- LOGF (info, " Setting magnetic field to %d kG for run %d from its GRP CCDB object" , grpo->getNominalL3Field (), bc.runNumber ());
143- } else {
144- LOGF (fatal, " GRP object is not available in CCDB for run=%d at timestamp=%llu" , bc.runNumber (), bc.timestamp ());
145- }
146- mRunNumber = bc.runNumber ();
126+ auto bc = track.collision_as <aod::Collisions>().bc_as <aod::BCsWithTimestamps>();
127+ if (mRunNumber != bc.runNumber ()) {
128+ auto grpo = ccdb->getForTimeStamp <o2::parameters::GRPObject>(ccdbpath_grp, bc.timestamp ());
129+ if (grpo != nullptr ) {
130+ o2::base::Propagator::initFieldFromGRP (grpo);
131+ o2::base::Propagator::Instance ()->setMatLUT (lut);
132+ LOGF (info, " Setting magnetic field to %d kG for run %d from its GRP CCDB object" , grpo->getNominalL3Field (), bc.runNumber ());
133+ } else {
134+ LOGF (fatal, " GRP object is not available in CCDB for run=%d at timestamp=%llu" , bc.runNumber (), bc.timestamp ());
147135 }
148- lastCollId = track. collisionId ();
136+ mRunNumber = bc. runNumber ();
149137 }
150138 auto trackPar = getTrackPar (track);
151139 auto const & collision = track.collision ();
@@ -157,9 +145,6 @@ struct TrackExtension {
157145 }
158146 }
159147 extendedTrackQuantities (dca[0 ], dca[1 ]);
160-
161- // TODO: add realtive pt resolution sigma(pt)/pt \approx pt * sigma(1/pt)
162- // TODO: add geometrical length / fiducial volume
163148 }
164149 }
165150 PROCESS_SWITCH (TrackExtension, processRun3, " Process Run3 track extension task" , false );
0 commit comments