Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Separate the phototube and digitizer into two distinguishable pieces. #4

Closed
cwwalter opened this issue Aug 7, 2014 · 4 comments
Closed
Assignees

Comments

@cwwalter
Copy link
Member

cwwalter commented Aug 7, 2014

This will allow us to separately specify various tubes, HPDs etc and digitizer electronics models.

Erin already started this work but I just rediscovered some work by Stan Seibert you also might look at in the archive/PMTProperties branch. It has some abstract base classes for digitizers that might be useful.

@cwwalter
Copy link
Member Author

cwwalter commented Sep 9, 2014

After this work is done, then a next step is issue #11.

@thomaslindner
Copy link

Hi,

I'm working on the option of using FADCs for HK and am hoping to find some time to test the performance of such a system using WCSim. Fixing this issue would clearly be helpful, since it would be easier to swap in a FADCDigitizier for a TDC/ADCDigitizer.

Have you considered/decided on how information would be transferred between the PMT simulation and the digitizer simulation? Ie, what data class would be used for communicating between the different classes?

Off the top of my head, I would imagine that you'd want something like

// List of all PEs for a particular PMT
class PMTSignal {
private:
G4int tubeID;
std::vector peTime; // time at which PE was created.
std::vector peCharge; // if in units of PE, then just drawn from a gaussian centered
// at 1 with width of PMT charge resolution.
std::vector truth; // some sort of pointer back to which true trajectory caused this hit.
// + all normal setters/getters
}

So for each photoelectron for a given PMT you would be storing the time and charge. I think this would be enough information to be able to simulate artificial waveforms for each PMT. This is the technique that we used for the ND280-FGD FADC simulation.

I don't think it would be necessary to have this information be persistent: it would just be an intermediate between the PMT and digitizer simulations.

Erin pointed out in a recent talk that it might also be nice if the PMT simulation also provided a pulse shape. It seems to me that it would be sufficient (at least for the near term) to have a single canonical pulse shape for each PMT. Ie it would not be necessary to have different single PE pulse shapes for each pulse: but rather to just have a single different pulse shape between PMTs and HPDs. So the HPD simulation would define some canonical pulse shape that was narrower than the PMT canonical pulse shape.

Naturally we would also need a solution to issue #11 before we could do a proper simulation of the FADC performance.

Thomas Lindner

@eosullivan
Copy link
Member

Hi Thomas,

Thanks for your comments on this. I am going to use the DigitsCollection class in Geant4 to pass the information between the PMT and Digitizer. I also considered using the HitsCollection class, but I couldn't find a compelling reason for using one over the other, and so ended up using DigitsCollection because I am maybe slightly more familiar with it.

I think the general method which you outlined is basically what I had in mind. The PMT module will take in the HitsCollection from the sensitive detector, will convert the pe into a charge by pulling from a distribution which is specific to the PMT type (the qpe0 array that exists currently in src/WCSimWCDigitizer.cc, for example), and then will output a collection with tubeID, the time of the event, and the charge.

I am glad to hear that this will have applications for your tests. Please let me know if you have any further comments, either now or once this update is committed.

Erin

eosullivan pushed a commit that referenced this issue Sep 18, 2014
…andles the functions related to the PMT, and WCSimWCDigitizer which handles the functions related to the digitizer. This fixes issue #4
cwwalter added a commit that referenced this issue Sep 23, 2014
Merge branch Feature/issue4.  This will close issue #4.
@cwwalter
Copy link
Member Author

This was fixed by pull request #17.

mahditaani referenced this issue in mahditaani/WCSim Aug 14, 2017
Feature/geometry transformation - Merging in order to allow people to work on correct geometry with fiTQun.  If we find other issues in the future we can merge again.
tdealtry referenced this issue in tdealtry/WCSim Apr 3, 2019
Create the emission spectrum for the WLS plates outside of the Steppi…
nickwp pushed a commit to nickwp/WCSim that referenced this issue Mar 9, 2021
mnieslony pushed a commit to mnieslony/WCSim that referenced this issue Jun 8, 2021
Co-authored-by: Marcus O'Flaherty <msoflaherty1@sheffield.ac.uk>
jerenner pushed a commit to jerenner/WCSim that referenced this issue Mar 1, 2022
Delete Eventdisplay directory
tdealtry added a commit that referenced this issue Jun 2, 2023
Fix loops over non-integral/iterable types WCSimConstructCylinder.cc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants