Added edm4eic::ChargeSharedSimLink#167
Conversation
|
The suggestions from the meeting were:
|
|
I changed the name of the class to I have been thinking about ways to recover the one-step association. One approach would be to create another class dedicated to truncating the intermediate links, so that the raw hits link directly to the underlying sim hit in a single step. However, even in that case, this class would still need input from the One way to eliminate the sim-to-sim hit link completely would be to modify the My opinion is that, unless we change the input/output class types of the |
|
SVT had noise injection at Raw hits stage eic/EICrecon#2670. Is charge sharing at raw hit stage also possible? Then they can have a one-to-many relation to the corresponding sim hits (can be more than one hits b/c the two clusters may overlap). |
|
SiliconChargeSharing outputs SimTrackerHits because, at least at that time, our group wants charge sharing to be an optional class that can be taken out without affecting downstream classes that takes SimTrackerHits by default. At that time, PulseGenerator which is immediately downstream of Charge Sharing class only takes SimTrackerHits as input, so my hand was tided. But things have changed now. PulseGenerator do take other classes as input. I guess I can give Shujie's idea of generating raw-hits a try. |
Personally, I like @veprbl's suggestion to implement dummy factories for the other detectors. This is functionality we'll ultimately have to implement for all of them, right? If so, then I think it makes sense to put in placeholders with the links! |
This is similar to what we did with SVT noise. SimHits --> RawHits with noise (is a dummy collection if the noise is off) --> RecHits. |
I gave it a lot of thought. I thought this was a good idea so I was half way done implementing it before running into some difficulties that changed my mind. In my pull request for TOF clustering, SiliconTrackerDigi class comes right after SiliconChargeSharing class. SiliconTrackerDigi turns SimTrackerHits into a RawTrackerHits, so making SiliconChargeSharing outputs RawTrackerHits seems to be no-brainer, as all I need to do is to skip the SiliconTrackerDigi entirely. But the problem is that in some other detectors like LowQ2, the output of charge sharing is piped into PulseGenerator, which takes a SimTrackerHit. I tried to write an adaptor in PulseGenerator to accept RawHits, but I don't find a satisfying way to write a PulseGenerator::addRelations. There is no "MutablePulseType::addToRawHit" interface yet. While I can implement one, I doubt having a mix of raw hits and sim hits relation simultaneously is a good idea, since RawHits and SimHits maybe duplicates of each other. Eventually, TOF will also switch to using PulseGenerator eventually so compatibility with PulseGenerator can't be ignored. The same problem arises with creating a Modifying all interfaces and Pulse schema seems to be more involved than I originally hope for. I can still do it, but I would like to ask for @veprbl and @ShujieL's opinion before committing to either solution. Should I change Pulse to add relation with raw hits? Or should I create |
|
I don't think we want to do charge sharing on raw hits as they are supposed to represent already digitized quantities that we will see out of the detector itself. My opinion is we should add the SimTrackerHitLink for now, I don't think there is any harm in having it available. Then moving on we could create a new hit type which represents the analogue parameterization containing the information which is required from the charge sharing to be able to independently reconstruct an accurate pulse in a pixel (or skip to ASIC dependant digitized hit). This hit type will require extra thought but I don't think the SimTrackerHit is the correct long term solution. |
|
I can also develop a new datatype as the output of charge sharing. However, it is still a mildly complex projects as,
Or, if we just want a minimal make shift solution, have charge sharing output the new data type, then I write an adapter class that immediately converts it back to SimTrackerHit so SiliconTrackerDigi can accept it without changing much of existing code. The immediate concern is that it renders the new class pointless. Or, just as @simonge suggested, we can accept this Sim -> Sim link for now and think about a solution later. I am open to all ideas, but I do need agreement from the experts before I commit to any idea. |
Personally, I agree with @simonge on this: I think it's reasonable to accept the sim-to-sim link now since there's no harm in making the type available. |
Briefly, what does this PR introduce? Please link to any relevant presentations or discussions.
Added links between the original SimTrackerHits and those spawned by the charge-sharing class. Required for pull request 2616 on EICrecon.
What is the urgency of this PR?
What kind of change does this PR introduce?
Please check if any of the following apply