cms-L1TK / cmssw

Fork of CMSSW where improvements to L1 tracking code are developed.
http://cms-sw.github.io/
Apache License 2.0
4 stars 5 forks source link

TrackletProcessorCombined outputting duplicate triplet seeds (CMSSW_14_1_0) #268

Open tomalin opened 5 months ago

tomalin commented 5 months ago

There are 40 TrackletProcessorDisplaced (TPD) modules per sector. The problem is that the majority of triplets are found twice. They should only be found once. The reason this happens is that two different TPD find each triplet.

As an example, in event 1, I see the same triplet (i.e. all three stubs with the same “unique index” and identical TPAR helix params) found by both TPD_L3L4L2A and TPD_L3L4L2B. I don’t know if the wiring map should prevent this happening, or if the C++ inside the TPD code should stop it.

In L3, which is the key layer in the L3L4L2 triplet finding, TPD_L3L4L2A reads stubs from memory AS_L3PHIAn4, whilst TPD_L3L4L2B reads stubs from AS_L3PHIAn5 . Both these memories contain an identical set of stubs.

The easiest way to see this is to run on ttbar+200PU, and near the top of function TrackletProcessorDisplaced::execute() to print out the name of the TPD that is about to produce triplets:

std::cout<<"DEBUGA "<getName()<<std::endl;

and later on in this function, just after the call to LLLSeeding, once the three stubs have been found, to do:

std::cout<<"DEBUGB "<<accept<<" "<uniqueIndex()<<" "<< middleStub->uniqueIndex()<<" "<< outerStub->uniqueIndex()<<std::endl;

The duplicate triplets are eliminated by the duplicate track removal, so this doesn't have too much affect on displaced tracking, aside from truncation due to the higher dater rate in the MP.