Corryvreckan merge requestshttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests2019-08-07T12:56:00+02:00https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/120New Features for DESY Testbeam Analysis2019-08-07T12:56:00+02:00Jens KroegerNew Features for DESY Testbeam AnalysisThis MR contains a couple of new features which are required for the DESY testbeam analysis, namely
In `[Tracking4D]`:
* require a certain detector to be part of the track (even if number of required clusters on track is smaller than...This MR contains a couple of new features which are required for the DESY testbeam analysis, namely
In `[Tracking4D]`:
* require a certain detector to be part of the track (even if number of required clusters on track is smaller than the total number of detectors (minus DUT)). This is needed to make sure the `Timepix3` provides a hit for each track such that its timestamp can be used.
* Use a defined detector to set the timestamp of the track (or: use the average of all cluster timestamps on the track as it was implemented previously). This is needed as the `Timepix3` shall define the track timestamp and not the average of 1x `Timepix3` + 6x `Mimosa26` which only have the "not-so-precise" trigger timestamp.
In `[ClusteringSpatial]` and `[Clustering4D]`:
* new 1D histogram of cluster timestamps
In `[ClusteringSpatial]`:
* if available attach trigger timestamp to cluster (before, the timestamp of clusters from this module was always `0`). This way, [Tracking4D] was not usable with `Timepix3` + `Mimosa26`
More things to be added...__no need to review yet__.Simon SpannagelMorag WilliamsSimon Spannagelhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/119Bug fixes + improvements in EventLoader2019-07-02T12:41:45+02:00Jens KroegerBug fixes + improvements in EventLoaderThis MR fixes an important bug in the `EventLoaderEUDAQ2`: pixels belonging to the same corryvreckan event were overwritten on the clipboard such that many hits were lost in the reconstruction.
In addition, improved debug output and m...This MR fixes an important bug in the `EventLoaderEUDAQ2`: pixels belonging to the same corryvreckan event were overwritten on the clipboard such that many hits were lost in the reconstruction.
In addition, improved debug output and more histograms, especially in TestAlgorithm for the spatial resolution are added.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/118Allow Configuration of EUDAQ2 Converters2019-06-19T14:09:39+02:00Simon SpannagelAllow Configuration of EUDAQ2 ConvertersThis MR allows to configure EUDAQ2 event converters by forwarding all configuration keys available in the respective Corryvreckan section. I.e.
```toml
[EventLoaderEUDAQ2]
name = "CLICpix2_0"
file_name = "run000299_caribou_190329160240...This MR allows to configure EUDAQ2 event converters by forwarding all configuration keys available in the respective Corryvreckan section. I.e.
```toml
[EventLoaderEUDAQ2]
name = "CLICpix2_0"
file_name = "run000299_caribou_190329160240.raw"
longcnt = 1
countingmode = 0
```
would allow to switch to long-ToA readout for CLICpix2. This is all independent of the detector attached, only drawback is the not-so-nice configuration class of EUDAQ2, see warning in the README.Jens KroegerJens Kroegerhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/117Improving cmake2019-06-11T09:56:10+02:00Lennart HuthImproving cmakeAs discussed in issue #63, cmake was throwing an error:
After upgrading my system I tried to reinstall corryvreckan and cmake is throwing the following error:
<pre>CMake Error at src/objects/CMakeLists.txt:5 (GET_FILENAME_COMPONENT):
G...As discussed in issue #63, cmake was throwing an error:
After upgrading my system I tried to reinstall corryvreckan and cmake is throwing the following error:
<pre>CMake Error at src/objects/CMakeLists.txt:5 (GET_FILENAME_COMPONENT):
GET_FILENAME_COMPONENT called with incorrect number of arguments
</pre>
@simonspa suggested to change
`GET_FILENAME_COMPONENT(ROOT_CMAKE_DIR ${ROOT_USE_FILE} DIRECTORY)` to `GET_FILENAME_COMPONENT(ROOT_CMAKE_DIR "${ROOT_USE_FILE}" DIRECTORY)`, which solved the issuehttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/116Detector: update conversion from local coordinates to pixel counts etc.2020-02-04T16:46:54+01:00Jens KroegerDetector: update conversion from local coordinates to pixel counts etc.While working on the improvement of the clustering and DUT association, I realized that we're currently now completely consistent with how we're using the coordinates in pixel units.
In most places a pixel has the sub-pixel range [col...While working on the improvement of the clustering and DUT association, I realized that we're currently now completely consistent with how we're using the coordinates in pixel units.
In most places a pixel has the sub-pixel range [col, col+1], accordingly for the row.
But then we have to add `1/2*pitch` every now and again to make sure the conversion `<int>` to `<double>` is correct. This is prone to errors and we're making some errors here.
So after a discussion with @simonspa, the conclusion was that it's more natural to change it to
[col-1/2,col+1/2].
__Advantage__:
* We don't have to add 1/2 pitch anywhere: but the conversion from `int` to `double` is much safer now: `double col = static_cast<double>(col_int)` and nothing can go wrong.
__Disadvantage__:
* pixel 0 extends into the negative range: [-0.5,0.5), all others are positive.
* From `double` to `int` previously was simply `int col = floor(dbl_col)` and it is now `int col = floor(dbl_col) + pitch/2` but this is hardly ever used whereas the opposite case (described above) is used all the time.
We only have to make sure we adjust all the affected histograms (range from `-0.5` to `Npixels-0.5` now and remove all the `+1/2*pitch`.
________
Here's a list of all modules being affected/not affected by this change.
The affected ones should be those which make use of in-pixel information. All histograms like hitmaps which are filled only with `int` values can stay the same.
__Affected__ (will have to look closer)
* [x] AnalysisCLICpix
* [x] AnalysisDUT
* [x] AnalysisEfficiency
* [x] AnalysisTelescope
* [x] AnalysisTimingATLASpix
* [x] Clustering4D
* [x] ClusteringSpatial
* [x] EtaCalculation
* [x] EtaCorrection
* [x] Tracking4D
* [x] TrackingSpatial
__Not affected__
* AlignmentDUTResidual
* AlignmentMillepede
* AlignmentTrackChi2
* AnalysisPowerPulsing
* Dummy
* EventLoaderATLASpix
* EventLoaderCLICpix
* EventLoaderCLICpix2
* EventLoaderEUDAQ
* EventLoaderEUDAQ2
* EventLoaderMuPixTelescope
* EventLoaderTimepix1
* EventLoaderTimepix3
* ImproveReferenceTimestamp
* MaskCreator
* MaskCreatorTimepix3
* Metronome
* OnlineMonitor
* Prealignment
* TestAlgorithm
* TreeWriterhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/115Improve [DUTAssociation]2022-06-24T16:32:49+02:00Jens KroegerImprove [DUTAssociation]__Implemented new feature__:
Using the parameter `use_cluster_centre`, the user can choose to use either the cluster centre of the nearest pixel of a cluster to be compared to the track intercept for the spatial cut.
In addition, the s...__Implemented new feature__:
Using the parameter `use_cluster_centre`, the user can choose to use either the cluster centre of the nearest pixel of a cluster to be compared to the track intercept for the spatial cut.
In addition, the spatial cut is now applied in __local coordinates__, before it was in __global coordinates__ which disturbs the result for sensors with a large rotation.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/114Improve Clustering - allow arithmetic or charge-weighted mean for cluster centre2019-10-29T13:40:02+01:00Jens KroegerImprove Clustering - allow arithmetic or charge-weighted mean for cluster centre__Implemented improvements:__
Now, there's the parameter `charge_weighting` to choose between __charge weighted__ and __arithmetic mean__ cluster centre calculation.
I also changed the Detector member functions `getLocalPosition()`...__Implemented improvements:__
Now, there's the parameter `charge_weighting` to choose between __charge weighted__ and __arithmetic mean__ cluster centre calculation.
I also changed the Detector member functions `getLocalPosition()` and so on because:
it would be much better to define a pixel as `[col-0.5,col+0.5)` rather than `[col,col+1)` as it is mostly (but not completely consistently) done now. This was fixed in a __separate merge request__ (!116), also updated all histograms etc. which are affected by this change.
Another issue we should discuss:
We have a couple of pixel hits with `charge=0`. When these build single-pixel clusters, the charge-weighted mean will fail because
```cpp
column += (pixel->column() * pixel->charge());
row += (pixel->row() * pixel->charge());
```
and later
```cpp
column /= (charge > std::numeric_limits<double>::epsilon() ? charge : 1);
row /= (charge > std::numeric_limits<double>::epsilon() ? charge : 1);
```
don't make sense as we do something like `column = 0/1`. However, if I add a condition `charge!=0` here, the charge-weighted mean is disturbed for multi-pixel clusters containing 1 pixel with zero charge.
__Note:__ Previously, pixels with zero charge were completely kicked out.
How should we handle that?
__Update:__
[See discussion below] The above problem, i.e. how to handle pixels with zero charge, is solved now by the following: If a cluster contains a pixel with zero charge we fall back to arithmetic mean instead of charge-weighted centre-of-gravity - assuming that `charge=0` doesn't mean __tiny__ charge but rather __unknown__ charge, such that the arithmetic mean is the better estimate for the cluster position.
__To Do before merging:__
* [x] remove debug histograms
* [x] solve single-pixel with charge=0 question (see description above)
* [x] Implement the same in `ClusteringSpatial()`https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/113reverted previous merge (issue #62) and fixed bug in EventLoaderMuPixTelescope2019-05-28T09:56:46+02:00Lennart Huthreverted previous merge (issue #62) and fixed bug in EventLoaderMuPixTelescopeTwo issues are addressed in this MR:
1: This fixes #62
2: after changing the pixel class @jekroege adjusted the EventLoaderMuPixTelescope and made a typo, which is corrected now.Two issues are addressed in this MR:
1: This fixes #62
2: after changing the pixel class @jekroege adjusted the EventLoaderMuPixTelescope and made a typo, which is corrected now.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/112Add CI test for event loader eudaq22019-09-24T17:55:00+02:00Jens KroegerAdd CI test for event loader eudaq2Added 6 tests that check for the number of pixel hits (on each of the 6 MIMOSA26 planes) read in by the `EventLoaderEUDAQ2` on a small data set (subset of run 273 from DESY, March 2019).
These tests will reveal errors related to changin...Added 6 tests that check for the number of pixel hits (on each of the 6 MIMOSA26 planes) read in by the `EventLoaderEUDAQ2` on a small data set (subset of run 273 from DESY, March 2019).
These tests will reveal errors related to changing the naming convention of planes or so like in !111.
The tests are recognised by cmake and run successfully on my laptop.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/111Extended the EventloaderEUDAQ2 to be able to also read in alpide data2019-05-21T17:36:52+02:00Lennart HuthExtended the EventloaderEUDAQ2 to be able to also read in alpide dataThe alpide data differs from the expected data format by the `EventLoaderEUDAQ2`.
Planes are identified by `evt->GetStreamN` and the detector names therefor need to be assembled differently. The alpide is identified over the detector typ...The alpide data differs from the expected data format by the `EventLoaderEUDAQ2`.
Planes are identified by `evt->GetStreamN` and the detector names therefor need to be assembled differently. The alpide is identified over the detector type form the geometry file.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/110Improve [AnalysisTimingATLASpix]2019-05-16T15:38:23+02:00Jens KroegerImprove [AnalysisTimingATLASpix]Some bug fixes + improvements:
* filling histograms which were forgotten after renaming
* correction of histogram name
* reordering of some histograms so they are next to each other in the ROOT file for easier comparison
* better error ...Some bug fixes + improvements:
* filling histograms which were forgotten after renaming
* correction of histogram name
* reordering of some histograms so they are next to each other in the ROOT file for easier comparison
* better error handling when row/timewalk correction files or graph names are wrong (previously: `LOG(ERROR)`, now `throw InvalidValueError`)https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/109Update README eventloadereudaq22019-05-16T14:18:59+02:00Jens KroegerUpdate README eventloadereudaq2Lennart pointed out that a description of the naming convention for planes: `<type>_<number>` is missing in the readme.
This probably got lost when rewriting the module 2 months ago.
Also added the histograms that are produced.Lennart pointed out that a description of the naming convention for planes: `<type>_<number>` is missing in the readme.
This probably got lost when rewriting the module 2 months ago.
Also added the histograms that are produced.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/108Contribution guideline points to old corry repository2019-05-15T15:33:50+02:00Lennart HuthContribution guideline points to old corry repositoryJust took me a while to realize that I am still comparing to the "wrong" master.Just took me a while to realize that I am still comparing to the "wrong" master.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/107AnalysisEfficiency: bug fix2019-05-14T15:01:33+02:00Jens KroegerAnalysisEfficiency: bug fix`AnalysisEfficiency`: moved calculation of binning in front of TProfile booking + error will be thrown if bin number is too fine for ROOT. Also correct conversion to um.
This fixes #59.`AnalysisEfficiency`: moved calculation of binning in front of TProfile booking + error will be thrown if bin number is too fine for ROOT. Also correct conversion to um.
This fixes #59.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/106Merge AnalysisEfficiency2019-05-14T17:50:47+02:00Jens KroegerMerge AnalysisEfficiencyThis is the module I used for the efficiency analysis of the ATLASpix.
Now is the time for some clean-up and to merge it into the master branch as the features I added during the analysis will also be useful for future chips for sure.
N...This is the module I used for the efficiency analysis of the ATLASpix.
Now is the time for some clean-up and to merge it into the master branch as the features I added during the analysis will also be useful for future chips for sure.
New features:
* new 1D histogram filled with all single-pixel efficiencies
* total efficiency is not only printed to the terminal but also saved as a `TEfficiency` (i.e. potentially with asymmetric error) and as `TName` (which I will probably remove)
* `Matrix<double>` that saves all timestamps of previous hits on a pixel such that it can be investigated if an inefficiency occurs due to a _"local pixel dead time"_ or something like that. Plus all the histograms required for that, i.e. "time difference to previous track" etc.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/105Merge AnalysisTimingATLASpix module2019-05-15T18:08:22+02:00Jens KroegerMerge AnalysisTimingATLASpix moduleThis is the module I use(d) for the detailed timing analysis of the ATLASpix including row and timewalk correction.
I'm just cleaning it up removing all the outdated debugging stuff and some #uglyhacks.
Also, I'll put the `ts1` and `ts2`...This is the module I use(d) for the detailed timing analysis of the ATLASpix including row and timewalk correction.
I'm just cleaning it up removing all the outdated debugging stuff and some #uglyhacks.
Also, I'll put the `ts1` and `ts2` individual bit histograms into the `EventLoaderATLASpix`.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/104EventLoaderEUDAQ2: implemented lower_case transformation of detector and plan...2019-05-09T12:03:03+02:00Jens KroegerEventLoaderEUDAQ2: implemented lower_case transformation of detector and plane...EventLoaderEUDAQ2: implemented lower_case transformation of detector and plane name before string comparison
This fixes #58.EventLoaderEUDAQ2: implemented lower_case transformation of detector and plane name before string comparison
This fixes #58.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/103In-pixel efficiency bin size parameter and `EventLoaderTimepix3` hitmap2019-05-02T13:19:18+02:00Morag WilliamsIn-pixel efficiency bin size parameter and `EventLoaderTimepix3` hitmapAdded a 2D hitmap to the `EventLoaderTimepix3` module.
Made the bin size of the in-pixel efficiency plot from `AnalysisEfficiency` configurable through parameter `inpixel_bin_size`. Also fixed typo in this module.
Both readme files hav...Added a 2D hitmap to the `EventLoaderTimepix3` module.
Made the bin size of the in-pixel efficiency plot from `AnalysisEfficiency` configurable through parameter `inpixel_bin_size`. Also fixed typo in this module.
Both readme files have been updated accordingly.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/102Implemented an eventloader for Mupix telescope data and some minor changes li...2019-04-25T16:39:26+02:00Lennart HuthImplemented an eventloader for Mupix telescope data and some minor changes listed belowThis PR introduces a new converter to read in data from the MuPix telescope. A FindMUPIX8DAQ.cmake is added to correctly include the libraries required. Some further minor changes are added:
* Millepede alignment has a new option to ign...This PR introduces a new converter to read in data from the MuPix telescope. A FindMUPIX8DAQ.cmake is added to correctly include the libraries required. Some further minor changes are added:
* Millepede alignment has a new option to ignore the DUT (set to false as default - should not affect any older code)
* Tracks that are not assigned to any DUT-cluster are also histogramed now in AnalysisDUT.
* ClusteringSpatial also stores the local cluster positionshttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/100jobsub: process same run with multiple configurations2019-05-08T13:00:32+02:00Jens Kroegerjobsub: process same run with multiple configurationsI rewrote the python script such that it is now also possible to process the same run with various cuts.
This closes #56.
Before merging, I'll test it more thoroughly and update the README as well.I rewrote the python script such that it is now also possible to process the same run with various cuts.
This closes #56.
Before merging, I'll test it more thoroughly and update the README as well.