Corryvreckan merge requestshttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests2022-11-23T10:46:19+01:00https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/572EventLoaderEUDAQ: Allow Re-Mapping of EUDAQ Plane IDs to Corry Names2022-11-23T10:46:19+01:00Simon SpannagelEventLoaderEUDAQ: Allow Re-Mapping of EUDAQ Plane IDs to Corry NamesSometimes the user would like to give detectors different names in Corryvreckan than provided by EUDAQ, or EUDAQ stores plane IDs in the data file which are incompatible with Corryvreckan configuration section headers. In this case, the ...Sometimes the user would like to give detectors different names in Corryvreckan than provided by EUDAQ, or EUDAQ stores plane IDs in the data file which are incompatible with Corryvreckan configuration section headers. In this case, the `remap_detectors` parameter can be used to assign new names to the individual EUDAQ plane IDs. The parameter is a 2D matrix, with two entries per row, the first being the EUDAQ plane ID and the second the desired Corryvreckan name of the detector. For example:
```toml
remap_detectors = [["USBPIX_GEN3_BOARD_-1_22", "FEI4"]]
```
would rename a EUDAQ plane called `USBPIX_GEN3_BOARD_-1_22`, incompatible with the Corryvreckan configuration, to a simple `FEI4`.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/571EventLoaderEUDAQ: fix examples2022-11-24T06:20:54+01:00Simon SpannagelEventLoaderEUDAQ: fix exampleshttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/568Creating a new module to read in data from a ALiBaVa system2022-12-01T14:49:43+01:00Fabian Simon LexCreating a new module to read in data from a ALiBaVa systemDescription:
The goal of this module is to be able to read data produced by the ALiBaVa readout system into Corryvreckan. Both the binary and the hdf file format produced by ALiBaVa are going to be supported. The raw data is going to be...Description:
The goal of this module is to be able to read data produced by the ALiBaVa readout system into Corryvreckan. Both the binary and the hdf file format produced by ALiBaVa are going to be supported. The raw data is going to be corrected for pedestal, noise, common mode and crosstalk.
Parameters that can be given to the module are the input directory and run number (to identify the input file), the lower and upper timecut (needed due to the way ALiBaVa works), the number of ignored events (to sync the events between ALiBaVa and telescope), the region of interest (to e.g do the analysis for only one of the two chips) and the polarity (as the sign of the signal changes depending on sensor type). Additionally it is going to be possible to give some sort of calibration to the module in order to convert the arbitrary ADC values into charge.
Current status:
Eventloader can read in binary files, timecuts, ignored events, ROI and polarity work as expected. Pedestal, noise and common mode correction are working properly. Pixel objects are created with ADC values instead of charge and can be used properly by other modules (e.g. Clustering).
To Do:
- Test if hdf files are read in correctly
- Implement crosstalk correction
- Implement calibration (still unclear in what way)
- Clean up the third party code for increased readabilityFabian Simon LexFabian Simon Lexhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/567Reimplemented Detector::getNeighbors() in col/row2022-10-19T18:13:11+02:00Miljenko SuljicReimplemented Detector::getNeighbors() in col/row`(const int col, const int row)` seem more natural coordinates/arguments than `const std::shared_ptr<Pixel>& px` for `Detector` class and its children. In particular as conversion from `(col,row)` to `Pixel` object is a bit cumbersome.`(const int col, const int row)` seem more natural coordinates/arguments than `const std::shared_ptr<Pixel>& px` for `Detector` class and its children. In particular as conversion from `(col,row)` to `Pixel` object is a bit cumbersome.Miljenko SuljicMiljenko Suljichttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/566Cleanup of EtaCalculation2022-11-25T14:30:35+01:00Simon SpannagelCleanup of EtaCalculationsome cleanup of eta calculation without change in functionality.some cleanup of eta calculation without change in functionality.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/565Fix Issue in Module Instantiation2022-10-25T09:29:30+02:00Simon SpannagelFix Issue in Module InstantiationThis MR fixes a problem in module instantiation that would occur in very specific setups. Thanks @cjessima for reporting!This MR fixes a problem in module instantiation that would occur in very specific setups. Thanks @cjessima for reporting!https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/564EventLoaderEUDAQ2: Mark Config Keys as Used2022-09-26T12:00:11+02:00Simon SpannagelEventLoaderEUDAQ2: Mark Config Keys as UsedThis closes #164This closes #164Simon SpannagelSimon Spannagelhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/562AlignmentDUTResidual: fix memory issue when prune_tracks is activated and min...2022-09-14T18:55:32+02:00David BacherAlignmentDUTResidual: fix memory issue when prune_tracks is activated and minor improvementsActivating `prune_tracks` in `AlignmentDUTResidual` can cause memory issues which result in `std::bad_alloc` or segmentation faults. The problem is that the associated clusters are only saved to the persistent storage if the track passe...Activating `prune_tracks` in `AlignmentDUTResidual` can cause memory issues which result in `std::bad_alloc` or segmentation faults. The problem is that the associated clusters are only saved to the persistent storage if the track passes the selection. If there are multiple DUTs it can happen that for one DUT the associated cluster of a track is not saved because it does not pass the `max_associated_clusters` selection but for another DUT the same track and corresponding associated cluster are saved. Any objects that are not saved to the persistent storage get deleted after the run loop finishes the event. Later in the `finalize` step of `AlignmentDUTResidual` the method `track->getAssociatedClusters(name)` gets called. This method loops through all the associated clusters of the track. But if not all the associated clusters of the track have been saved to the persistent storage, it basically accesses memory that has been released, which of course causes undefined behaviour. This fix circumvents this problem by storing the associated clusters in a map and only accessing the ones corresponding to the requested detector when trying to retrieve them.
I also noticed that the tracks get saved globally for all detectors, but the alignment is basically done independently for each DUT. This means that for the alignment some tracks are simply duplicated or there are tracks included that do not have an associated cluster on the DUT that is currently aligned.
Additionally I noticed that the residual profile plots are filled in the wrong way (residual and position are interchanged from what they should be).
Cheers, Davidhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/561Fixing packaging stage2022-09-13T19:09:15+02:00Lennart HuthFixing packaging stageThis MR intents on fixing the current issues in packaging:
![Screenshot_2022-09-13_at_18.42.19](/uploads/aacdaffdc79e67349432eaee982d1fe2/Screenshot_2022-09-13_at_18.42.19.png)This MR intents on fixing the current issues in packaging:
![Screenshot_2022-09-13_at_18.42.19](/uploads/aacdaffdc79e67349432eaee982d1fe2/Screenshot_2022-09-13_at_18.42.19.png)https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/560Changed Occupancy distance and Local significance distance titles and axis2022-12-01T09:47:08+01:00Isabelle Ruby DarlingtonChanged Occupancy distance and Local significance distance titles and axisOccupancy dist and local significance dist histogram labels changed:
distance->distribution
y->counts
x->occupancy and local significance respectively
This closes #165Occupancy dist and local significance dist histogram labels changed:
distance->distribution
y->counts
x->occupancy and local significance respectively
This closes #165https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/559Fix code spell2022-08-26T16:39:23+02:00Lennart HuthFix code spellFixing code spell errors in masterFixing code spell errors in masterLennart HuthLennart Huthhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/558CI: fix typo for linting job2022-08-12T12:26:15+02:00Simon SpannagelCI: fix typo for linting jobSimon SpannagelSimon Spannagelhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/557Fix prevention of compiler smartness (copy elision)2022-08-26T16:35:28+02:00Simon SpannagelFix prevention of compiler smartness (copy elision)This closes #167This closes #167Simon SpannagelSimon Spannagelhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/555Fixed row limits on AnalysisDUT residualsRowVsTime histogram2022-08-29T08:33:54+02:00Ryunosuke O'NeilFixed row limits on AnalysisDUT residualsRowVsTime histogram@haschmit found that `residualsRowVsTime` was using the `X()` accessor on `m_detector->nPixels()` rather than `Y()` to define the limits@haschmit found that `residualsRowVsTime` was using the `X()` accessor on `m_detector->nPixels()` rather than `Y()` to define the limitshttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/554Fixed path to init_x86_64.sh in setup_lxplus.sh2022-08-29T04:44:10+02:00Callan JessimanFixed path to init_x86_64.sh in setup_lxplus.shUpdated `setup_lxplus.sh` to reflect the new location of `init_x86_64.sh` as of 50e92745Updated `setup_lxplus.sh` to reflect the new location of `init_x86_64.sh` as of 50e92745https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/553Detector: Add getNeigbors2022-09-26T11:59:24+02:00Simon SpannagelDetector: Add getNeigborsThis adds a `getNeighbors()`method to get a list of all viable neighboring pixels t a given one. This is useful when wanting to check neighbors of a seed without restricting this to regular Cartesian pixel grids. (cc) @msuljicThis adds a `getNeighbors()`method to get a list of all viable neighboring pixels t a given one. This is useful when wanting to check neighbors of a seed without restricting this to regular Cartesian pixel grids. (cc) @msuljicSimon SpannagelSimon Spannagelhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/552ClusteringAnalog module2022-10-20T17:45:59+02:00Miljenko SuljicClusteringAnalog moduleThis module clusters the input data of an analog detector.
The clustering method employs thresholds (fixed, signal-to-noise, or combination) to select the seed pixels and their neighbors. This procedure is performed iteratively for neigh...This module clusters the input data of an analog detector.
The clustering method employs thresholds (fixed, signal-to-noise, or combination) to select the seed pixels and their neighbors. This procedure is performed iteratively for neighbors to include in the cluster all pixels with the signal above a given threshold.Miljenko SuljicMiljenko Suljichttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/551MCParticle: support for textwriter2022-08-08T17:28:29+02:00Lennart HuthMCParticle: support for textwriterLennart HuthLennart Huthhttps://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/550AnalysisDUT for derived class2022-09-22T11:45:55+02:00Yitao WuAnalysisDUT for derived classDear experts,
I have been developing corry modules for ALICE-ITS3 analog sensors (CE65, APTS) for last months. After the first version of `ClusteringAnalog`, I started working on `AnalysisCE65` which is similar as `AnalysisDUT`. The ini...Dear experts,
I have been developing corry modules for ALICE-ITS3 analog sensors (CE65, APTS) for last months. After the first version of `ClusteringAnalog`, I started working on `AnalysisCE65` which is similar as `AnalysisDUT`. The initial proposal was meant to extract specific histograms for associated analog clusters, including Signal-Noise ratio, charge fraction, cluster shape, neighbor information, and etc.
As to general usage, most of the functionalities have been implemented and validated very well in `AnalysisDUT`. The simplest way I found was to add an interface inside `AnalysisDUT::run()` for associated clusters, like `fillClusterHistograms(Cluster*)`. Then I can override it directly in the derived class `AnalysisCE65`, see [example](https://gitlab.cern.ch/alice-its3-wp3/corryvreckan/-/tree/WIP-analysis-ce65/src/modules/AnalysisCE65). Other changes are listed below.
It seems most of the modules are not designed for inheritance. Please let me know if this attempt is conflict with your guidelines, I will cancel this MR and rewrite the module `AnalysisCE65`.
Best regards,
Yitao WU
---
Changelog:
- `fillClusterHistograms`: NEW function for derived class, fill histograms for associated clusters.
- `acceptTrackDUT`: NEW function for derived class, track selectoin for DUT geometry.
- Rejection for edges around masked pixels (TBD)
- `hCutHisto`: rewrite to calculate raw efficiency
- use __enum__ to specify track selections
- add bin for `kAllTrack`, `kPass`, `kAssociated `
- remove normalization step
- `hUnassociatedTracksLocalPosition`: NEW histogram for in-efficiency local map.https://gitlab.cern.ch/corryvreckan/corryvreckan/-/merge_requests/549EventLoaderEUDAQ2: Add Possiblity to Read Waveforms2022-08-10T15:33:41+02:00Simon SpannagelEventLoaderEUDAQ2: Add Possiblity to Read Waveforms...needs https://github.com/eudaq/eudaq/pull/664, so it would be great to merge that and then tag EUDAQ 2.5.0 so we can up the requirement in CMake [here](https://gitlab.cern.ch/corryvreckan/corryvreckan/-/blob/master/src/modules/EventLo......needs https://github.com/eudaq/eudaq/pull/664, so it would be great to merge that and then tag EUDAQ 2.5.0 so we can up the requirement in CMake [here](https://gitlab.cern.ch/corryvreckan/corryvreckan/-/blob/master/src/modules/EventLoaderEUDAQ2/CMakeLists.txt#L6).Simon SpannagelSimon Spannagel