@@ -369,7 +369,7 @@ std::vector<TrackSegment> RawDataSpan::makeMCTrackSegments()
369369}
370370
371371// / The RawDataManager constructor: connects all data files and sets up trees, readers etc.
372- RawDataManager::RawDataManager (std::filesystem::path dir, std::string treefname )
372+ RawDataManager::RawDataManager (std::filesystem::path dir)
373373{
374374
375375 if (!std::filesystem::exists (dir) || !std::filesystem::is_directory (dir)) {
@@ -556,7 +556,7 @@ RawDataManager::RawDataManager(std::filesystem::path dir, std::string treefname)
556556 mTransformer .init ();
557557 mTransformer .setCalVdriftExB (calvdriftexb);
558558LOGP (info," Setup root tree for output" );
559- mfile = new TFile (treefname. c_str () ," RECREATE" );
559+ mfile = new TFile (" track2tracklet.root " ," RECREATE" );
560560 moutputtree = new TTree (" t" ," tracklets and tracksegments" );
561561
562562}
@@ -935,25 +935,38 @@ bool RawDataManager::getYZAt(float xk, float b, float& y, float& z, o2::dataform
935935
936936int RawDataManager::findNearestTracklet (o2::trd::TrackSegment& tracksegment)
937937{
938- auto triggertime = tracksegment.getTriggerTime ();
939938 // loop through tracklets and find closest.
940939 //
941940 //
942941 //
943942 // //// WE ARE HERE !!!!!!!
944- for (auto & trgrec : mTriggerRecord ){
945- auto triggertime = getTriggerTime (trgrec, *mTFIDs , mTimeFrameNo - 1 );
946- if (!trackMatchesCollision (triggertime, tracksegment.getTrackTime ())) {
947- continue ;
948- }
949- for (int trklt=trgrec.getFirstTracklet (); trklt<trgrec.getFirstTracklet ()+trgrec.getNumberOfTracklets ();++trklt){
950-
951- }
952-
953-
943+ float mindistance=2.0 ;
944+ int closesttracklet=-1 ;
945+ auto & trgrec = mTriggerRecord ;
946+ auto triggertime = getTriggerTime (trgrec, *mTFIDs , mTimeFrameNo - 1 );
947+ // if (!trackMatchesCollision(triggertime, tracksegment.getTrackTime())) {
948+ // continue;
949+ // }
950+ for (int trklt=trgrec.getFirstTracklet (); trklt<trgrec.getFirstTracklet ()+trgrec.getNumberOfTracklets ();++trklt){
951+ auto tracklet=(*mTracklets )[trklt];
952+ if (!(tracklet.getDetector ()==tracksegment.getDetector ())){
953+ continue ;
954+ }
955+ LOGP (info," Comparing tracklet padrow {} to segment padrow {}" ,tracklet.getPadRow (),tracksegment.getPadRow ());
956+ // LOGP(info,"Comparing tracklet det {} to segment det {}",tracklet.getDetector(),tracksegment.getDetector());
957+ if (!(tracklet.getPadRow ()==tracksegment.getPadRow ())){
958+ continue ;
959+ }
960+ float distance = std::abs (tracklet.getPadCol () - tracksegment.getPadColAtTimeBin ());
961+ if (distance<mindistance){
962+ mindistance=distance;
963+ closesttracklet=trklt;
964+ }
954965 }
955-
966+ return closesttracklet;
956967}
968+
969+
957970int RawDataManager::propagateTrack (o2::dataformats::TrackTPCITS& track, float e, float maxStep, float triggertime, int & glbTrkltIdxOffset, int collisionId)
958971{
959972 if (debugprint)
@@ -1095,6 +1108,7 @@ int RawDataManager::propagateTrack(o2::dataformats::TrackTPCITS& track, float e,
10951108 // -------------------------------------/
10961109 // convert global to local ROC x,y,z:
10971110 rct = ctrans->RecalculateRCT (currDet, localpoint.X (), localpoint.Y (), localpoint.Z (), ctrans->GetT0 (), ctrans->GetVdrift (), ctrans->GetExB ());
1111+ // ChamberSpacePoint a(track.getRefTPC(),currDet, localpoint.X(), localpoint.Y(), localpoint.Z(), rct, false);
10981112 ChamberSpacePoint a (track.getRefTPC (),currDet, localpoint.X (), localpoint.Y (), localpoint.Z (), rct, false );
10991113
11001114 tracksegment.setStartPoint (a);
@@ -1116,7 +1130,7 @@ int RawDataManager::propagateTrack(o2::dataformats::TrackTPCITS& track, float e,
11161130 auto localpointendG = t2gmatrix * trackxyzend;
11171131 auto localpointend = l2gmatrix * localpointendG;
11181132 if (debugprint)
1119- LOGP (info, " {} {} end of track local pos: {:.2f} {:.2f} {:.2f} pt:{:.4f} its:{} tpc:{}" , __func__, __LINE__, localpointend.X (), localpointend.Y (), localpointend.Z (), track.getPt (), (int )track.getRefITS (), (int )track.getRefTPC ());
1133+ LOGP (info, " {} {} end of track local pos: {:.2f} {:.2f} {:.2f} pt:{:.4f} its:{} tpc:{} rct:{}:{}:{} " , __func__, __LINE__, localpointend.X (), localpointend.Y (), localpointend.Z (), track.getPt (), (int )track.getRefITS (), (int )track.getRefTPC (),rct[ 0 ],rct[ 1 ],rct[ 2 ] );
11201134 rcts = ctrans->RecalculateRCT (currDet, localpointend.X (), localpointend.Y (), localpointend.Z (), ctrans->GetT0 (), ctrans->GetVdrift (), ctrans->GetExB ());
11211135 ChamberSpacePoint ae (track.getRefTPC (),currDet, localpointend.X (), localpointend.Y (), localpointend.Z (), rcts, false );
11221136 tracksegment.setEndPoint (ae);
@@ -1133,7 +1147,7 @@ int RawDataManager::propagateTrack(o2::dataformats::TrackTPCITS& track, float e,
11331147 // TODO what to do if the tracksegment spans a padrow or mcm ?
11341148 // postprocess the tracksegment and split it up?
11351149
1136- if (debugprint)
1150+ // if (debugprint)
11371151 LOGP (info, " TrackSegment padrow:padcol:timebin {:.2f}:{:.2f}:{:.2f} --> {:.2f}:{:.2f}:{:.2f} for det:{} and padrow:{}" , tracksegment.getStartPoint ().getPadRowF (), tracksegment.getStartPoint ().getPadCol (), tracksegment.getStartPoint ().getTimeBin (), tracksegment.getEndPoint ().getPadRowF (), tracksegment.getEndPoint ().getPadCol (), tracksegment.getEndPoint ().getTimeBin (),currDet,tracksegment.getPadRow ());
11381152 if (debugprint)
11391153 LOGP (info, " TrackSegment x:y:z {:.2f}:{:.2f}:{:.2f} --> {:.2f}:{:.2f}:{:.2f}" , localpoint.X (), localpoint.Y (), localpoint.Z (), localpointend.X (), localpointend.Y (), localpointend.Z ());
@@ -1143,7 +1157,7 @@ int RawDataManager::propagateTrack(o2::dataformats::TrackTPCITS& track, float e,
11431157 btracksegments.push_back (tracksegment);
11441158 // find nearest tracklet to this track segment.
11451159 int trackletindex=findNearestTracklet (tracksegment);
1146- btracklet .push_back (mTracklets [trackletindex]);
1160+ btracklets .push_back ((* mTracklets ) [trackletindex]);
11471161 } else {
11481162 LOGP (info, " Track could not be propagated to radius of chamber {} which is layer: {}" , currDet, iLayer);
11491163 }
@@ -1327,8 +1341,8 @@ bool RawDataManager::nextTimeFrame(bool onlydigits)
13271341 }
13281342 // LOGP(info, "Building track segments for time frame {} that has {} tracks, with pt>1.0 {} with pt>2.0 {}", mTimeFrameNo, mITSTPCTracks->size(),highpttracks,higherpttracks);
13291343 auto tracksegmentstart = std::chrono::high_resolution_clock::now (); // measure total processing time
1330- // if(mTimeFrameNo==50 )buildTrackSegments(onlydigits);
1331- buildTrackSegments (onlydigits);
1344+ if (mTimeFrameNo > 6 )buildTrackSegments (onlydigits);
1345+ // buildTrackSegments(onlydigits);
13321346 // LOGP(info,"sorting ITSTPC track segments with size : {} mTimeFrameNo : {}",mITSTPCTracks_segments.size(),mTimeFrameNo);
13331347 std::stable_sort (mITSTPCTracks_segments .begin (),mITSTPCTracks_segments .end (),comp_tracksegments);
13341348 // tracksegements are now trd trigger order.
@@ -1505,6 +1519,6 @@ std::string RawDataManager::describeEvent()
15051519 out << " ## TF:Event " << mTimeFrameNo << " :" << mEventNo << " : "
15061520 // << hits->getsize() << " hits "
15071521 << mTriggerRecord .getNumberOfDigits () << " digits and "
1508- << mTriggerRecord .getNumberOiTracklets () << " tracklets" ;
1522+ << mTriggerRecord .getNumberOfTracklets () << " tracklets" ;
15091523 return out.str ();
15101524}
0 commit comments