Skip to content

Commit 553b2d9

Browse files
committed
figuring out why itstpc tracks miss ROCs
1 parent c58ee23 commit 553b2d9

5 files changed

Lines changed: 48 additions & 23 deletions

File tree

Detectors/TRD/base/src/GeometryBase.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ GPUd() int GeometryBase::getStack(float z, int layer) const
4141
zmax = pp->getRow0();
4242
int nrows = pp->getNrows();
4343
zmin = zmax - 2 * pp->getLengthOPad() - (nrows - 2) * pp->getLengthIPad() - (nrows - 1) * pp->getRowSpacing();
44-
// printf("zmax : %f, zmin: %f nrows: %d, ipadlength : %f, padrowspacing: %f\n",zmax,zmin,nrows,pp->getLengthIPad(), pp->getRowSpacing());
44+
//LOGP(info,"zmax : {}, zmin: {} nrows: {}, ipadlength : {}, padrowspacing: {}",zmax,zmin,nrows,pp->getLengthIPad(), pp->getRowSpacing());
4545
} while ((z < zmin) || (z > zmax));
46-
// printf("z %f zmax : %f, zmin: %f \n",z,zmax,zmin);
46+
//LOGP(info,"z {} zmax : {}, zmin: {} ",z,zmax,zmin);
4747

4848
return istck;
4949
}

Detectors/TRD/qc/include/TRDQC/CoordinateTransformer.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ class TrackSegment
144144

145145
/// detector number
146146
int getDetector() const { return mStartPoint.getDetector(); }
147-
float getPadRow() const { return mStartPoint.getPadRowF();}
147+
float getPadRowF() const { return mStartPoint.getPadRowF();}
148+
int getPadRow() const { return mStartPoint.getPadRow();}
148149
int getPadCol() const { return mStartPoint.getPadCol();}
149150

150151
int getCollisionId() const { return mCollisionId;}
@@ -172,6 +173,10 @@ class TrackSegment
172173
float getStartX(){return mStartX;}
173174
float getStartY(){return mStartY;}
174175
float getStartZ(){return mStartZ;}
176+
float getEventNo(){return mEventNo;}
177+
float getTimeFrame(){return mEventNo;}
178+
void setTimeFrame(int tf){mTimeFrame=tf;}
179+
void setEventNo(int eventno){mEventNo=eventno;}
175180
void setPt(float pt){ mPt=pt;}
176181
void setSnp(float snp){ mSnp=snp;}
177182
void setPhi(float phi){ mPhi=phi;}
@@ -191,6 +196,8 @@ class TrackSegment
191196
int mCollisionId{0};
192197
float mTriggerTime{0.0};
193198
float mTrackTime{0.0};
199+
int mTimeFrame{0};
200+
int mEventNo{0};
194201
float mSagita; // this is findable from the TrackID
195202
int mDetector;
196203
int mDetector2; // for those instances where the track finishes a layer in a different detector to that which is starts in.

Detectors/TRD/qc/include/TRDQC/RawDataManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ class RawDataManager
192192
o2::trd::TrackletTransformer mTransformer;
193193
bool propagateToLayerX(o2::dataformats::TrackTPCITS& track, float xToGo, float e, float maxStep);
194194
void prepareTracking();//std::array<int32_t,540*mMaxTriggers>& trdTrackletIndexArray);
195+
int findNearestTracklet(o2::trd::TrackSegment& tracksegment);
195196
int propagateTrack(o2::dataformats::TrackTPCITS& track, float e, float maxStep, float triggertime, int& glbTrkltIdxOffset, int collisionId);
196197
int32_t getSector(float alpha);
197198
float getAlphaOfSector(const int32_t sec);

Detectors/TRD/qc/src/RawDataManager.cxx

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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);
558558
LOGP(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

936936
int 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+
957970
int 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
}

Detectors/TRD/qc/src/TRDQCLinkDef.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
#pragma link C++ class o2::trd::RawDisplay + ;
3030
#pragma link C++ class o2::trd::MCMDisplay + ;
3131
#pragma link C++ class o2::trd::TrackletTrackDebug + ;
32+
#pragma link C++ class std::vector<o2::trd::ChamberSpacePoint> + ;
33+
#pragma link C++ class std::vector<o2::trd::HitPoint> + ;
34+
#pragma link C++ class std::vector<o2::trd::TrackSegment> + ;
3235
#pragma link C++ class std::vector<o2::trd::TrackletTrackDebug> + ;
3336

3437

0 commit comments

Comments
 (0)