JeffersonLab / hcana

Hall C++ Analyzer
7 stars 118 forks source link

RFTime Class #466

Closed sjdkay closed 3 years ago

sjdkay commented 3 years ago

New RFtime class to determine distributions for the HMS/SHMS that can be utilised for PID.

Currently fairly barebones (no corrections for particle type) but can still be used to separate different hadrons in the SHMS.

Adds three new dbase values that can be set (I set them in standard.kinematics) -

Bunch_Spacing_Override - A variable that can be used to forcibly set the bunch spacing to a specific value HMS_RF_Offset - A value between -/+ Bunch spacing to centre the distribution as needed SHMS_RF_Offset - A value between -/+ Bunch spacing to centre the distribution as needed

If the override is NOT set, the bunch spacing is determined from Epics read in in the class.

See attached pdf for some comparisons (page 6) -

The top row is the values plotted from the calculation in the analysis script, the bottom row is the same set of plots but using the output of the new hcana class. The final plot on each row shows the full distribution (magenta), the distribution with pion PID cuts applied (red) and with an RF cut applied (blue). In this case the cut is clearly wrong though so it isn't particularly helpful. This is just set in the analysis script so isn't an "error" or issue with the new class in any way.

This is utilised in a replay script in a VERY similar way to the CoinTime class -

//Add RF physics module THcRFTime::THcRFTime (const char name, const char description, const char hadArmName, // const char elecArmName, const char RFname) : THcRFTime RFTime = new THcRFTime("RFTime", "RF Time Determination", "P", "H", "T.coin"); gHaPhysics->Add(RFTime);

Pion_Histos_7873_120000.pdf

sjdkay commented 3 years ago

Annoyingly it has included an additional commit I've added since this request was put in which is still being tested and I don't want to merge in just yet!

The changes probably won't cause any harm but they haven't been fully tested yet. I added in some quick calculations to the THcSecondaryKinematics class to determine the missing mass for three different hadronic species (pi/K/p) regardless of what is specified in standard.kinematics. Based upon what is specified in standard.kinematics, it calculates the missing mass for each particle species (applying relevant corrections to the missing energy where needed). Again, this is something I have been doing frequently in my analysis anyway and I thought it would be useful to just determine in the replay step.

I've tested it quickly for pions (see first page of attached, top row is determination in subsequent analysis, bottom row is plots when determined using the new calculation in hcana) and it looks to be working fine. For reference, standard.kinematics here was told that the SHMS was detecting kaons. Ideally, I want to test some corner cases for this and check the other particle species too.

If possible, reject/exclude anything but the first three commits for now! This is something I'm hoping to submit very soon though.

Pion_Histos_7873_150000.pdf

sjdkay commented 3 years ago

Ok so I've updated the additions to Secondary kinematics a little more. I've tested it and it's working fine, my results match up with what I got from my previous python based calculations and analysis. This doesn't really change anything so much as add something people might want. As such I think it should be included with the RFtime class addition too.