Test Beam Facility For hIgh Rate STudies (TB.First) @IPHC
This page contains instructions and illustrations on how to run the test beam facility at Strasbourg. The page is under construction and for the moment contain only relevant information for the test of a tracker phase 2 2S mini module (2CBC3).
FIXME add documentation about CBC2/3 calibration
Contacts
A quick set of useful contacts in the table below:
FIXME add more contacts from CYRCé
Description of the current setup, installation
ping 192.168.7.230 // ping FC7
ping 192.168.7.221 // ping GLib
Description of the functionalities of the ChrominiSupervisor
Test of the CMS Phase-1 Pixel modules with Digital Test Board (DTB)
To operate the DTB the most commonly used user interface is Pixel eXpert Analysis & Readout (pXar) which implements
the full test suite required for module calibration and qualification. Or else more flexible scripting capabilities using the Python interface
can be provided by the pxarCore library.
Useful contact
Useful documentation
pXar installation
The compilation of pXar source code requires ROOT installation (recommended to build ROOT from the source), the libusb 1.0 library to
communicate with the DTB (libusb-1.0-0-dev on Linux), and the FTDI library for FTDI chips (libftdi-dev on Linux).
Download the latest version of the code from github repo :
git clone https://github.com/psi46/pxar.git pxar
Create and work into build directory :
cd pxar/ && mkdir build && cd build
Run CMake (that searches for all required packages and verifies all dependencies) :
cmake ..
Compile code :
make [-j4] install
At this stage, if compilation errors related to ROOT appear, ensure that pXar uses the same C++ standard version
as the one with which ROOT was built. To know ROOT C++ standard version config :
root-config --cflags
Then remove all files in the build directory and re-run CMake to build with the same standard (C++17 as example) :
rm -rf build/* && cmake -D CMAKE_CXX_STANDARD=17 ..
First DTB connection try
In pxar/ directory :
cd ../main
./mkConfig -d testModule -t TBM10D -r proc600v3 -m
../bin/pXar -d testModule -g -v DEBUG
USB device error
If problem of USB connections with the DTB, try these magic lines (on Linux) :
sudo mount --bind /dev/bus /proc/bus
sudo ln -s /sys/kernel/debug/usb/devices /proc/bus/usb/devices
sudo chmod 666 /proc/bus/usb/00*/*
sudo modprobe -r ftdi_sio
Re-run these commands before each USB connection to the DTB.
DTB firmware loading
To properly operate the DTB, you also need to have the matching firmware loaded onto that
device. The firmware can be obtained by downloading from github repo (in pxar/ directory) :
git clone https://github.com/psi46/pixel-dtb-firmware.git
Then download the firmware :
./bin/pXar -f ../../pixel-dtb-firmware/FLASH/FLASHFILE
The download can take a while. Don't turn off the power until the 4 LEDs are on ! After that power-cycle the DTB.
New L1 modules
Information provided by D. Kotlinski after the laboratory tests carried out at PSI before sending the modules :
Module |
Prod. date |
HDI |
Sensor |
Sensor origin |
Defects |
Bad pixels |
Bad bumps |
Comments |
Grade |
1704 |
03/06/20 |
4-041 |
381784-25-1 |
new sensor 13/3 |
24 |
0-18 |
0-59 |
high current |
C |
1705 |
03/06/20 |
4-043 |
381783-07-1 |
new sensor 2.2/3.1 |
1.9 |
21 1-3 |
0-23 |
|
A |
1706 |
03/06/20 |
3-033 |
350853-22-1 |
old sensor |
0.3 |
32 0-8 |
0-4 |
|
A |
1707 |
03/03/20 |
3-041 |
381785-06-2 |
new sensor 2.0/3.4 |
1.2 |
18 0-3 |
0-8 |
|
A |
1708 |
04/06/20 |
5-021 |
381783-23-1 |
new sensor 0.30/1.1 |
0.6 |
47 0-15 |
0-0 |
|
A |
1714 |
05/06/20 |
3-043 |
350855-20-2 |
old sensor |
0.8 |
1200 1-6 |
0-4 roc8(40),roc11(1200) |
many bb defect |
C |
1722 |
06/07/20 |
3-033 |
32498-24-3 |
old sensor |
1.9 |
1203 0-10 |
0-280 roc15(676) |
many bb defect |
C |
1723 |
06/07/20 |
3-034 |
322498-24-2 |
old sensor |
50 |
485 0-18 |
0-29 rocs1,12 |
more high current |
C |
Link to the summary :
http://dkotlins.web.cern.ch/dkotlins/CMS/V3/l1_2019_modules_v3.pdf
The folders containing the settings (in pXar format) and the results of these preliminary tests are on lxplus (CERN server) : /afs/cern.ch/work/d/dkotlins/public/v3/
Preparation of pixel module
Setup of the environment : make sure root is sourced. Then to allow the usb port to be accessible (under linux) :
sudo mount --bind /dev/bus /proc/bus ;
sudo ln -s /sys/kernel/debug/usb/devices /proc/bus/usb/devices ;
sudo chmod 666 /proc/bus/usb/00*/* ;
sudo modprobe -r ftdi_sio ;
First to test the programmability of the module :
FIXME add link to the github branch, create the git branch:
https://github.com/clgrimault/pxar/tree/iphc
Information on the pixel module
Pixel Number |
Hub address |
Comments |
Test results |
M3028 |
25 |
L3 from Nikkie |
1 dead ROC if no HV |
M3211 |
31 |
L3 from Danek |
... |
M3558 |
29 |
L3 from Danek |
... |
M3672 |
30 |
L3 from Nikkie |
... |
M3704 |
4 |
L3 from Nikkie |
... |
M4643 |
15 |
L4 from Nikkie |
problem of configuration if no HV |
Installation of the DUT (pT mini module)
Grounding of the mini module
Here is a picture of the grounding of the mini-module. The ground is connected to the ground of the LV power supply. It is also attached to the DAQ crate.
Cabling and setting of the LV (UIB)
The UIB needs to be powered by multiple low voltage values. The various voltages can be seen on the following pictures :
The voltages to used are mention directly on the PS. It might have to be slightly increased, so to have the correct voltages at the entrance of the UIB. This has to be verified and adjusted with a voltmeter.
There is a colour code for the cables. The colour of cables seen on the PS connectors matches the colour of cables on the UIB, as can be seen in the following picture :
WARNINGs :
- there is a black strips on one of the green cable. The position of the cable in the UIB can be seen on the pictures above. It should corresponds to the left green cable on the PS (to be verified)
- a USB cables has to a POWERED USB port !!. If the s-curves look strange, the USB port might not be powered properly. The easiest is to connect the USB cable directly on the port located on the LV power supply.
- not to damage the UIB, the LV should be powered simultaneously.
Cabling and setting of the HV
WARNING : the bias voltage should be negative , make sure the led blue led on the right side are on (not the red one). To change the polarity (in principle you don't have to do it, it should be well define by default) .
For changing the High Voltage value :
add pictures
- make sure the HV channels are OFF. WARNING, the 2 HV channels of the 2S minimodule should be off/on at the same time. We should avoid as much as possible differences of potential between the 2 channels.
- with the central button, highlight the channel you want to change. Click on the select button.

</verbatim>
- click on the voltage button

</verbatim>
- click on the edit button to set the new voltage. Use the central big button (turning it) to set the voltage. Use the digit button to change digit

</verbatim>

</verbatim>

</verbatim>
- click on the apply button and go back to the main page. To start ramping the voltage, push the channel button.
Preparing the CRATE :
Fixme add picture, with a description of all the element in the crate, how the FC7 connect to the UIB, etc... Describe powering up, cheks and these sort of stuffs.
Trigger system with scintillators
- 2 beam scintillators for coincidence, each 2mm thick, size of pixel module (≈ 40x67mm2)
- Hamamatsu small PMTs H10721 with low voltage control
- In special housing to allow mounting without heavy scotch tape in beam but testing in lab
- Flexibility of changing scintillator
- All mecanical parts of housing produced by 3D printer (Thierry G.)
- First tests were done with 90Sr beta source
- Very fast signals
Trigger supervisor on GLib
Trigger logic
Cabling
Synchronisation with the beam
The telescope
The Motherboard and the connected pixel modules
|
Set up with 6 Modules connected |
|
|
Proposition for the Cyrce configuration :
check the fiber association
Layer |
Position |
Pixel Number |
Name |
Hub address |
Slot on the MB |
Position on the FMC8SFP |
Fiber color (number) |
TBM channels |
DetID |
Comments |
Layer 1 |
up |
M3558 |
BPix_BmO_SEC1_LYR3_LDR2F_MOD4 |
29 |
211 |
B |
white (6) |
11 and 12 |
344463364 |
|
Layer 1 |
bottom |
M4643 |
BPix_BmO_SEC1_LYR3_LDR2F_MOD1 |
15 |
221 |
G |
green (3) |
5 and 6 |
344462340 |
problem of config if no HV |
Layer 2 |
up |
M3028 |
BPix_BmO_SEC4_LYR3_LDR1F_MOD4 |
25 |
212 |
E |
blue (1) |
1 and 2 |
344725508 |
Layer 2 |
bottom |
M3672 |
BPix_BmO_SEC1_LYR3_LDR3F_MOD1 |
30 |
222 |
F |
aqua (12) |
23 and 24 |
344724484 |
|
Parking |
up |
M3211 |
BPix_BmO_SEC1_LYR3_LDR1F_MOD1 |
31 |
214 |
C |
pink (11) |
21 and 22 |
344987652 |
On a connector with a red point |
Parking |
bottom |
M3704 |
BPix_BmO_SEC1_LYR3_LDR4F_MOD1 |
4 |
223 |
D |
purple (10) |
19 and 20 |
344986628 |
Not responding anymore. On a connector with a red point |
important associated file: /home/xtaldaq/TriDAS/Config/nametranslation/0/translation.dat
Remark : Before the first calibration, we need to take the files obtained from the DTB measurements using Pxar and convert them from Pxar to POS, following the recipe on the
page from Nikkie.
Make sure in the DAC file the following two lines are added:
VIbias_bus: 30 # Under the VcThr parameter
TempRange: 60 # Under the CalDel Parameter
and modify the WBC value in the DAC file to 95, to allow the
CalDel calibration to select a proper value (and get a red cross on the plot).
|
Set up with 6 Modules connected |
Pixel Number |
Name |
Hub address |
Slot on the MB |
Position on the FMC8SFP |
Fiber color (number) |
TBM channels |
Comments |
M3558 |
BPix_BmO_SEC1_LYR3_LDR2F_MOD4 |
29 |
211 |
B |
white (6) |
11 and 12 |
|
M3211 |
BPix_BmO_SEC1_LYR3_LDR1F_MOD1 |
31 |
221 |
G |
green (3) |
5 and 6 |
Troubles with ROC 8, 9 and 10 (noisy) and ROC 11 (empty sometimes) and 15 (empty always) |
M3028 |
BPix_BmO_SEC4_LYR3_LDR1F_MOD4 |
25 |
212 |
E |
blue (1) |
1 and 2 |
|
M3704 |
BPix_BmO_SEC1_LYR3_LDR4F_MOD1 |
4 |
222 |
F |
aqua (12) |
23 and 24 |
|
M4643 |
BPix_BmO_SEC1_LYR3_LDR2F_MOD1 |
15 |
223 |
D |
pink (11) |
21 and 22 |
Clement: problem of config if no HV, Chromini : no data at all. On a connector with a red point |
M3672 |
BPix_BmO_SEC1_LYR3_LDR3F_MOD1 |
30 |
214 |
C |
purple (10) |
19 and 20 |
Troubles with ROC 14 (noisy) and 15 (empty always). On a connector with a red point |
|
Set up with 4 Modules connected |
Pixel Number |
Name |
Hub address |
Slot on the MB |
Position on the FMC8SFP |
Fiber color (number) |
TBM channels |
Comments |
M3704 |
BPix_BmO_SEC1_LYR3_LDR4F_MOD1 |
4 |
223 |
D |
white (6) |
11 and 12 |
on a connector with a red point, some ROC have strange behaviour for the VcThrCalDel calibration |
M3672 |
BPix_BmO_SEC1_LYR3_LDR3F_MOD1 |
30 |
214 |
C |
aqua (12) |
23 and 24 |
on a connector with a red point |
M3558 |
BPix_BmO_SEC1_LYR3_LDR2F_MOD4 |
29 |
211 |
B |
blue (1) |
1 and 2 |
|
M3028 |
BPix_BmO_SEC4_LYR3_LDR1F_MOD4 |
25 |
213 |
H |
green (1) |
5 and 6 |
|
important associated file: /home/xtaldaq/TriDAS/Config/nametranslation/0/translation.dat
It is very important to have modules connected on the connectors with a red point.
If not, we do not succeed in configuring correctly the other modules connected on the motherboard : the I_ana current does not rise after many (!) configurations.
Order to respect to turn it on
- Start the crate
- Start the Magma Box (the button on the back side of the box and the button on the front end)
- Start the PC sbgat209 (if the magma box is off and is connected to the PC via fibers and transiver, then the PC will stop during his boot, without any message on the screen, and nothing will work)
- Open the different windows with running the script
./terminalTabs.sh
in ~/TriDAS/pixel/ChrominiSupervisor/script/
-
sudo ./useFTDI
to re-initialize correctly the link with the i2c master (from the TriDas/pixel/PixelRun directory)
- Start the PoS :
cd /home/xtaldaq/TriDAS
source setenv.sh
cd pixel/PixelRun/
./run.sh --xml ~/TriDAS/pixel/PixelRun/telescopeIphc.xml
- Ping the different boards in the crate by clicking the TeleMCH
link in ChrominiSupervisor (re-click if red) or running the script ./pingAllHosts.sh
in ~/TriDAS/pixel/ChrominiSupervisor/script/
- Modify the status of some registers on the FED by clicking the Reset GTX ...
link in ChrominiSupervisor or see Chromie instructions here
- Put the low voltages on the motherboard
- To get the FerolSource in green, we need to make the link first with one loop-back configuration of the ferol.
- The arduino should be launched automatically with the ChrominiSupervisor, and the Time Series DataBase
shoud be filled with values (login: xtaldaq (xtaldaq1)).
Environmental measures
An
Arduino equipped with multiple sensors performs Temperature, Humdity, Light acquisition
Check the version of firmware/configuration :
- Firmware FED 18.7, FEC 1.2, triggerSupervisor v21
- trigger delay = 30 in the triggerSupervisor
LV and Current info
For a setup with all the 6 modules connected on the MB (with the new LV, configurable from PC!):
|
Before Chromini6ModulPhysics configuration -- note that the LV were not perfectly adjusted to MB requierements at the time of the screenshot |
|
After Chromini6ModulPhysics configuration |
It seems that when the
CalDel parameters are not well determined, we need to configure several time the MB and the pixel modules to achieve the target current on I_ana.
For a setup with 4 modules connected on the MB (M3704, M3672,M3558 and M3028):
For comparison, with 3 modules connected on the MB (M3704, M3672 and M3558):
For comparison, with the setup with 2 modules connected on the connectors with the red points (M3704 and M3672):
Low voltage on MB:
- stored values on the 1st recall set on the 3 LV : for the 2 module configuration
- stored values on the 2nd recall set on the 3 LV : for the 3 module configuration
- stored values on the 3rd recall set on the 3 LV : for the 4 module configuration
HV info
NEVER TURN THE HV ON IF THERE IS NO LV APPLIED ON THE MODULES !!!
Keep the modules in the dark when HV is on, and use the air conditioning (and if not, use a table fan) !
The HV can be controled from the PC. Use -130 V. Check the current over time, for 6 modules it is about 44 to 51 microA (depending on the time).
|
Set up with 6 Modules connected |
|
Set up with 4 Modules connected |
|
Measurement of I vs HV |
|
Measurement of I vs time for HV=130V, time is in minutes and time=0 means 14:00. The variation observed for the 3 first measurements (<=30 min) is directely related to the change of light in the room (impact of the sun outside)! After that, we close the window blinds. But then with time the temparture of the modules started to rise and we observed a higher current on the HV. |
Take a physics run
|
Use the new ChrominiSupervisor |
You can add the option
--autorun {nb of wanted events}
and refresh the Xdaq page to automatize all the next actions (Initialize, Configure, Start, Halt, Quit)
- On the xdaq page on a web browser
- click on Initialize
- select the configuration "Cyrce4ModL34Physics" in the menu
- click on Configure
- then check on the bottom of the page that you see the FED phases as on the example
or on the ChrominiSupervisor image linked above.
- Start the ferol on a terminal
- Select the trigger configuration (Scintillators (or internal), check that the Reset button is not pressed, and that we see the counter changing when pushing the Read button)
- Click on the AMC13 picture on the ChrominiSupervisor and remove the command "lt 1000 1" and validate. This action will allow the events to be send to the ferol and then gets the events written on disk.
(To launch the AMC13 manually see below the old procedure below.)
- Start the run
- Halt the run on the ChrominiSupervisor
- Stop the ferol by clicking the Quit link at the bottom of the page
Here is the procedure to take a physics run with Chromini, based on what is done for Chromie
25 Easy Steps To Data Taking
.
cd /home/xtaldaq/TriDAS
source setenv.sh
cd pixel/PixelRun/
./run.sh --xml ~/TriDAS/pixel/PixelRun/telescopeIphc.xml
- On the xdaq page on a web browser --> sbgat209:1973 :
- click on Initialize
- select the configuration "PhysicsChromini"
- click on Configure
- then check on the PoS window that you see the FED phases example
- Start the ferol
You can run without the "-r" option if you are sure that the run number is already correctly synchronised between the ferol and the pos.
see the corresponding doc for
chromie
- Prepare the AMC13
- Start the run on xdaq
- Start the trigger on the AMC13
-
lt c
or lt 1000 1
for 1000 triggers
- Stop triggering on the AMC13
- Halt the run on xdaw
- Stop the ferol by pressing "q"
The data taken are stored on "/tmp" as selected on the ferol step.
Take a calibration run
- Create a new calibration: modify the script "mkNewConfigChromini.sh" in /home/xtaldaq/TriDAS/Config, as suggested by the Chromie documentation Config And Calibration
.
cd pixel/PixelRun/
./run.sh --xml ~/TriDAS/pixel/PixelRun/telescopeIphc.xml
- On the xdaq page on a web browser
- click on Initialize
- select the configuration "Chromini6ModulCalDel" in the menu
- click on Configure
- then check on the bottom of the page that you see the FED phases
- switch to the PixelSupervisor
- start the run
- decide if you want to upload the new measurements (if yes, this will create a new dac directory with the new files, and uplaod the aliases.txt and configuration.txt files)
- halt the run
- List of the calibrations already performed:
- Delay25 (not working)
- TBMDelay25 (to be done only once)
- CalDel
- VcThrCalDel (the one we do each time before a beam test --- dependence with respect to the temperature ?)
- PixelAlive
- SCurve_faster
- GainCalibration
- PLL calibration to synchronize pixel modules among each other : 3 calibrations have to be performed one after the other. The list of PLL calibrations : TBMPLLNoTokenPass, TBMPLL, ROCPLL. What we did : run the 1st one, store the new values ; re-run the 1st one to check that the values are still the same ; if not, store and re-run ; if yes, run the 2nd calib, store, check ; then run the 3rd calib. when this loop is done, start again the full loop. In principle this calib is already done with the DTB but it seems that it is really needed to be performed with the final cabling scheme. If we don't change the cabling, we don't need to redo this calibration one more time. After that loop of calibrations, the pixel modules should be synchronized and correlations among them should be visible in DQM root file).
- Analysis of calibration runs:
- For PixelAlive, SCurve_faster and GainCalibration, we need to run the reco before getting a root file to analyse:
$BUILD_HOME/pixel/PixelAnalysisTools/test/bin/linux/x86_64_centos7/PixelAnalysis.exe $BUILD_HOME/pixel/PixelAnalysisTools/test/configuration/PixelAliveAnalysisTelescope.xml 100475
$BUILD_HOME/pixel/PixelAnalysisTools/test/bin/linux/x86_64_centos7/PixelAnalysis.exe $BUILD_HOME/pixel/PixelAnalysisTools/test/configuration/GainAnalysisTelescope.xml 100198
$BUILD_HOME/pixel/PixelAnalysisTools/test/bin/linux/x86_64_centos7/PixelAnalysis.exe $BUILD_HOME/pixel/PixelAnalysisTools/test/configuration/SCurveAnalysisTelescope.xml 100201
where the last number is the run number you want to analyse. For that, you should be in the directory where the output files are, ie in /home/xtaldaq/TriDAS/pixel/PixelRun/Runs/Run_0/Run_X where Run_X corresponds to the run number.
-
- There exists in /home/xtaldaq/TriDAS/pixel/PixelRun/Runs/Run_0 an interesting file called plot_Nmodules.C which allows to plot the results for several ROC on one histogram, for a given run.
root -q -l -e "r=151;n=1011;t='C';" plot_Nmodules.C
root -q -l -e "r=246;n=110110;t='C';" plot_Nmodules.C
where you should give to "r" the run number. "n" tells on which modules to run, to be defined as
n = (1/0 for SEC4 2F, 1/0 for SEC4 1F, 1/0 for SEC1 4F, 1/0 for SEC1 3F, 1/0 for SEC1 2F, 1/0 for SEC1 1F),
so n = 1011 will select the plots for SEC1 4F, 2F and 1F (as = 001011).
and n=110110 is the cyrcé configuration

But the older option n<=6 still works indicating how modules to include, given a special ordering

And finally "t" indicates the type of plots to extract :
C = 2D CalDel,
G = 1D slope for Gain,
H = 2D intercept for Gain,
I = 1D intercept for Gain,
P = 2D PixelAlive,
N = 1D noise for SCurve,
S = 2D noise for SCurve,
R = 1D threshold for SCurve,
T = 2D threshold for SCurve,
V = 2D VcThrCalDel.
cd /home/xtaldaq/TriDAS
source setenv.sh
cd pixel/PixelRun/
./run.sh --xml ~/TriDAS/pixel/PixelRun/telescopeIphc.xml
- On the xdaq page on a web browser at the address sbgat209:1973 :
- click on Initialize
- select the configuration "ChrominiDelay25"
- click on Configure
- start the run
At the end of the run, you have the possibility to upload the new values in the dac directory in an automatic way. Before doing that, check the root files in /home/xtaldaq/TriDAS/pixel/PixelRun/Runs/Run_0/Run_X where X is the run number. If you decide to upload the values, say yes on the xdaq web broswer and then halt the run. In that case, the program will create automatically a new dac directory where it will copy the new .dat files. It will also modify the aliases.txt and configurations.txt files : In aliases.txt, the new dac directory recieves the old alias name, the previous dac directory is therefore not anymore aliased. The calibration name remains the same but it gets a new key number in configurations.txt, because the dac directory has changed.
If you decide not to upload the values, just halt the run.
- List of the calibrations already performed:
M3704 |
BPix_BmO_SEC1_LYR3_LDR4F_MOD1 |
CalDel ok, VcThrCalDel ok |
M3672 |
BPix_BmO_SEC1_LYR3_LDR3F_MOD1 |
Roc 14 and 15 are empty in the CalDel output root file, Roc 15 is empty in the VcThrCalDel output root file, |
M3558 |
BPix_BmO_SEC1_LYR3_LDR2F_MOD4 |
Roc 6 is noisy and Roc8 is empty in the CalDel output root file, VcThrCalDel ok |
M3028 |
BPix_BmO_SEC4_LYR3_LDR1F_MOD4 |
CalDel ok, VcThrCalDel ok but sometimes the bottom of the Scurve is empty |
- Interesting commands to know:
cd /home/xtaldaq/TriDAS/Config
/home/xtaldaq/TriDAS/pixel/bin/PixelConfigDBCmd.exe --insertVersionAlias calib 50 ChrominiDelay25
whe 50 is the new directory in calib, to be associated with the alias name
ChrominiDelay25.
The existing calib aliases can be seen with the command
/home/xtaldaq/TriDAS/pixel/bin/PixelConfigDBCmd.exe --printVersionAliasList calib
More examples taken from the bash history :
cd /home/xtaldaq/TriDAS/pixel
bin/PixelConfigDBCmd.exe --insertVersionAlias calib 51 ChrominiTBMDelay25
PixelConfigDBCmd.exe --printVersionAliasList calib
bin/PixelConfigDBCmd.exe --insertVersionAlias calib 52 ChrominiCalDel
PixelConfigDBCmd.exe --printVersionAliasList calib
bin/PixelConfigDBCmd.exe --insertVersionAlias calib 53 ChrominiVcThrCalibration
find . -name delay25.dat
cd /home/xtaldaq/TriDAS/Config/calib/
mkdir 50
cp 2/delay25.dat 50/
Do the reconstruction
At the monent, the reco is working in Caroline's directory on ui6 under CMSSW_10_1_11 release
cmsrel CMSSW_10_1_11
cd CMSSW_10_1_11/src # at this stage this is empty
cmsenv
git cms-init
git remote add CHROMIETeledaq
https://github.com/CHROMIETeledaq/cmssw.git
git fetch CHROMIETeledaq
git cms-merge-topic CHROMIETeledaq:chromie
git checkout CHROMIETeledaq/chromie
git cms-checkdeps -a
scram b clean
scram b -j10
cd Geometry/PixelTelescope/test
# Then you can copy paste the files you want:
# /opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/DQMTelescope/PixelTelescope/plugins/AnaChromini.cc
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/data/tuneParameters.xml
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/data/telescope.xml
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/plugins/DDTelescopePlaneAlgo.h
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/plugins/DDTelescopePlaneAlgo.cc
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/test/Chromini/SiPixelLorentzAngle.db
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/test/Chromini/SiPixelLorentzAngleSim.db
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/test/Chromini/pixel_telescope_beamspot.db
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/test/Chromini/pixeltelescope_v1_cabling.db
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/test/Chromini/PixelTelescope_BeamData_RECO.py
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_16dec19/CMSSW_10_1_11/src/Geometry/PixelTelescope/test/Chromini/PixelTelescope_RAWDataCollector_185.py
with the
AnaChromini.cc code. The names of the files on which to run have to be put by hand in the PixelTelescope_RAWDataCollector.py python file. Then run with
cmsRun PixelTelescope_RAWDataCollector.py
cmsRun PixelTelescope_BeamData_RECO.py
It is very important to know which fiber is associated to which module to make identify the detID.
See
table here
Old configuration with 4 modules connected to the
MotherBoard
Pixel Number |
Slot on the MB |
Fiber color (number) |
detID |
Chromie Module Name |
Chromie Position |
M3704 |
223 |
white (6) |
344463364 |
M3175 |
Layer 2 [O] |
M3672 |
214 |
aqua (12) |
344724484 |
M3009 |
Layer 1 [I] |
M3558 |
211 |
blue (1) |
344725508 |
M3057 |
Layer 1 [O] |
M3028 |
213 |
green (1) |
344462340 |
M3082 |
Layer 2 [I] |
Latency scan for the pixel commissionning
Recipe to take change the latency and run a physics run
Here is the list of script to run frm the sbgat209, with some actions to be tacken simultaneaously withe the xdaq web interface
- go the the directory
/home/xtaldaq/TriDAS/Config
- to change the value of the WBC (latency in bunch-crossing unit (so 25 ns) )
./changeValue.py WBC 21 -d dac/19/
- go the the directory
/home/xtaldaq/TriDAS/pixel
- launch fedtkit applications
python /opt/xdaq/bin/fedKit.py -q
- launch cross daq application
- in the director =/home/xtaldaq/TriDAS/pixel/PixelRun
- launch xdaq
./run.sh --xml ~/TriDAS/pixel/PixelRun/telescopeIphc.xml
(check the "ready" statement on the screen)
- initialize
- select Cyrce4ModL34Physics
- configure , for the first switch on, configure without LV, and halt and reconfigure until the power consumption is reasonnable,
- select run number and Start
- click on AMC13 picture and hit space then OK
- in the directory
/home/xtaldaq/lcharles/trigSupervisor
do python ctrl_trig_ext_bunch.py
- check number of trigger in Ferol->Ferol Controller->Monitoring
- click Halt
- click QUIT (at bottom of page)
Next step:
- Check "Write data to": /home/xtaldaq/datata
- You should find a directory with run number
Do the simulation
Ongoing....
The recipe is under development and can be read in
/opt/sbg/cms/safe1/cms/ccollard/TrackerTelescope/ui6/Chromini_simu/info_caro.txt
The code is compiling. The first step is running but somewhere in the code there should be a threshold which prevent to have
SimHit for 25
MeV protons. It works for 120
GeV protons.
The step to produce digis is crashing. To be continued....
Next steps :
- Work on the simu...
- Upgrade the telescope with new MB and new pixel modules.
To-Do List :
- Par rapport aux nouvelles MB :
-
- Mettre une protection sur les chips pour modules L1, une fois bondés, de type résine globtop si les MB sont ok.
-
- comment protéger les modules L1 pour les tests ou les poser sur les cadres en alu (pas d'oreilles!)?
-
- utiliser les nouveaux cables "capton" longs de 1 m.
-
- Commander des DOH carriers de spare avec le quartz classique (clock LHC) s’il en existe quelque part en stock.
-
- Possibilité de se procurer une nouvelle carte i2c ?
-
- tester les nouveaux modules avec la DTB
-
- tester les modules avec la nouvelle MB...
-
- mettre le telescope 2.0 dans la nouvelle boite à cyrcé
Installation of the DAQ software (Ph2_ACF)
The DAQ PC is sbgat231, login xtaldaq, password xtaldaq.
The description and instalation of the DAQ soft is shown in the gitlab
https://gitlab.cern.ch/cms_tk_ph2/Ph2_ACF
Here is some description of the framework
https://indico.cern.ch/event/842824/contributions/3538260/attachments/1921782/3179353/DAQWorkshop_HandsOn.pdf from the tracker phase 2 DAQ workshop
https://indico.cern.ch/event/842824/timetable/?view=standard
for setting up the FC7 :
https://indico.cern.ch/event/842824/attachments/1920624/3177632/PreparingFC7.pdf
and for installing soft
https://gitlab.cern.ch/fravera/Ph2_ACF/tree/daqWorkshop
on CC7
sudo yum install boost
sudo yum install boost-devel
create a file (touch)
sudo nedit sudo /etc/yum.repos.d/ipbus-sw.repo &
and add the following lines in that file
[ipbus-sw-base]
name=IPbus software repository
baseurl=http://www.cern.ch/ipbus/sw/release/2.5/centos7_x86_64/base/RPMS
enabled=1
gpgcheck=0
[ipbus-sw-updates]
name=IPbus software repository updates
baseurl=http://www.cern.ch/ipbus/sw/release/2.5/centos7_x86_64/updates/RPMS
enabled=1
gpgcheck=0
sudo yum clean all
sudo yum groupinstall uhal
sudo yum install root
sudo yum install root-net-http root-graf3d-gl root-physics root-montecarlo-eg root-graf3d-eve root-geom libusb-devel xorg-x11-xauth.x86_64
sudo yum install cmake
git clone https://:@gitlab.cern.ch:8443/fravera/Ph2_ACF.git
mkdir Ph2_ACF/build
cd Ph2_ACF/build
sudo yum install pugixml
sudo yum install pugixml-devel
cmake ..
make
cd ..
source setup.sh
the list of available firmware :
./bin/fpgaconfig -c settings/IphcDescription.xml -l
To load another firmware :
./bin/fpgaconfig -c settings/IphcDescription.xml -f d19c_8cbc3-1_8cbc3-2.bin -i d19c_8CBC3_workshop.bin
to determine the firmware version to use :
./bin/fpgaconfig -c settings/IphcDescription.xml -i d19c_8CBC3_workshop.bin
to push into gitlab on the branch
JAFromDAQWorkshop :
git push --set-upstream https://gitlab.cern.ch/jandrea/Ph2_ACF.git JAFromDAQWorkshop
To load a new firmware, use the fbgaconfig binary:
./bin/fpgaconfig -h
To get the list of available firmware :
./bin/fpgaconfig -c settings/IphcDescription.xml -l
and load that onto the sd card with
./bin/fpgaconfig -c settings/IphcDescription.xml -f firmware/d19c_2cbc3_none.bin -i d19c_2cbc3_none
then load the image to the fpga with
./bin/fpgaconfig -c settings/IphcDescription.xml -i d19c_2cbc3_none
Instructions for calibrating the system (CBC3 mini module for the moment)
- start by verifying that the box of the mini-telescope is close and light tight. Deplete to -10 V and verify the current on the HV power supply. It should remain well below the microA. Once verified, you can set the HV to 400V, the full depletion being around 300V. After stabilizing, the current consumption of current at 400V should be (KIT double mini module) : 0.1377 microA, 0.4368 microA. This is tested within the casemate. Could be different in the lab.
The following calibration (offset and noise) can be done with external clock (if available)
<Register name="ext_clk_en"> 1 </Register> <!-- the external clock should be at 42.5 MHz (85/2) -->
But the internal trigger should be used
<Register name="trigger_source"> 3 </Register> <!-- default value is 3 -->
to do : add pictures illustrating the results of the calbiration
bin/calibrate -f settings/IphcDescription.xml
The calibration files are produced in the Results folder
In
IphcDescription.xml, change the path of
in
IphcDescription.xml the new ones obtained by the calibration
bin/calibrate -f settings/IphcDescription.xml -n
at full depletion, noise should be at 5-6 Vcth. Question : out of the scan, how to determine the Vcth value ? From the value of noise from the plots, one needs to calculat the threshold, as 5 sigma above the noise, so it is
threshod = 590 (the pedestal value, not to change) - noise*5(sigma).
Example, for a noise of 9, threshold = 590-9*5 = 545. this value has to be reported to
*Enable testpulses and put them on e.g 180.Testpulses can be enabled and put to a certain height (Low: 250 , high: 0, because of electron mode) with
<TestPulse enable="1" polarity="0" amplitude="180" channelgroup="0" delay="0" groundothers="1"/>
- set Vcth Threshold at 550 Vcth (Pedestals defaults value is 590, thus 40 Vcth*180 e-/Vcth ~7200e- threshold
<Register name="ext_clk_en"> 0 </Register>
</verbatim>
<Register name="trigger_source"> 6 </Register> <!-- default value is 3 -->
- enable handshake mode (see comments about handshake below)
<Register name="data_handshake_enable"> 1 </Register>
<TestPulse enable="0" polarity="0" amplitude="230" channelgroup="0" delay="0" groundothers="0"/>
- set Vcth Threshold at 550 Vcth (Pedestals defaults value is 590, thus 40 Vcth*180 e-/Vcth ~7200e- threshold
<Register name="ext_clk_en"> 1 </Register>
<Register name="trigger_source"> 5 </Register> <!-- default value is 3 -->
the latency found (max of the distribution) has to be propagated to the xml file :
<Settings threshold="420" latency="68"/>
The same procedure as the one described in the section "Latency scan with signal particles" has to be followed, except that the call of the function should be :
bin/commission -f settings/IphcDescription.xml -m 0 -r 400 --notdc -s
<Register name="common_stubdata_delay"> 194 </Register>
16CBC3 module
Link to twiki 16-CBC3 module
Elog
Installed on xtaldaq, connect, open firefox and go to
http://sbgat231:8080/TB.First/
How to take a combined run (with the telescope and the 2S module) ?
Information taken from
this google sheet
.
Before starting a combined run, the telescope should already have been configured until the expected I_ana value is obtained. Otherwise making several configuration in combined mode will generate errors.
- Start the PoS and the fedKit with:
cd /home/xtaldaq/TriDAS/pixel
./runFedKit.sh --xml ~/TriDAS/pixel/PixelRun/telescopeIphc.xml
* Start the miniDAQ of the 2D module with the option "-s" + a duration option "-D" (units= second). The option "-e" allows to choose a fixed number of events to be taken, in placed of a fixed time for the duration of the run :
miniDAQ -f tb_july/D19CDescription_iphc_data.xml -D 30 --withCIC -q -d --lvps "http://192.168.7.94/scpi_response.txt?request=inst:nsel%202" -s
- In the ChrominiSupervisor : click on "initial" for the DUT
- In the ChrominiSupervisor : click on the boxes for the telescope and the DUT and then click on "Initialize"
- In the ChrominiSupervisor : click on "Configure"
- In the ChrominiSupervisor : When the 2 setups are configured, we can start the run. The run number can be selected for the telescope, but the one for the DUT is automatically increased with respect to the previous DUT run number.
- In the ChrominiSupervisor : click on the AMC13 and launch an empty command. This will release the triggers both for the telescope and the DUT.
- If the -D option was set to 30 seconds for the DUT, the DUT run will stop after that time, but we need to manually stop the telescope run.
List of known issues
Within the Box
- Opening the air extraction will increase the temperature and the humidity in the old box. Don't open it too large, just what is needed to get the correct pressure within the box.
- Loss of connection with the LV of the DUT or the telescopre (firmware bug by the onstructor). Solved by resetting manually the LV.
Configuration of the pixel
- Before starting a combined run, the telescope should already have been configured until the expected I_ana value is obtained. Otherwise making several configuration in combined mode will generate errors related to the FEC.
Trigger, delays, latency, ...
- Check the value of the trigger delay in the ChrominiSupervisor, if this value is not equal to 30, the pixel modules will not be synchronized with the trigger arrival. The value in the box on the top right corner of the ChrominiSupervisor should be 66, for the same reason. If this is not the case, you have to update the latency in the pixel config files
./changeValue.py WBC 66 -d dac/19/
where the dac directory (here taken as 19 in the example) should correspond to the one used in physics run.
- Don't forget to send the empty command on the AMC13 to allow the telescope (and the DUT in case of combined run) to recieve the triggers.
- In case of tests with the internal trigger from the TriggerSupervisor, choose a small value of rate (in kHz).
- Don't forget to validate any change done within the TriggerSupervisor.
- Trigger rate read on the TriggerSupervisor : the determination of the rate takes some time, it needs to stabilize, especially after a reset of the trigger. be patient... Clicking several times on the read button could help to increase the stat for the measurement.
- The 2S module does not work properly if the rate is too low (to be check with the latest version of the code).
- Observed problem without solution : sometimes the latency seems to drift. We have observed a few runs for which the <#clusters/event> in the telescope suddenly falls to very small values, while nothing has changed with comparison to good runs...
Ferol
- In case of probem with the ferol, close all the windows on sbgat209 and start a new session. If this does not cure the problem, reboot pc and ferol (follow carefully the procedure written above on this twiki)
- Problem with the EVM unit during a run with the pixels : mismatch between the run numbers (behind the output directories in datata). Solved by increasing manually the run number in the ChrominiSupervisor.
Data taking program and analyses
test beam of the 17th of July 2019
Link to the googlesheet with measurement points
link
Bias scan and re-calibration
The idea of the scan is to determine a voltage point for which the amount of charge collected is relatively close to MIP kind of beam. The idea behind is to run under-depleted and to increase the thresholds so to deal with the extra noise, while keeping high efficiency. The procedure is the following :
- use a low intensity beam. 10 fA seems to be ok,
- measure the "efficiency" at 400 Volts (by looking at the number of events without any hits).
- decrease the bias voltage to 25 Volts by steps of 25 volts, and for each point :
-
- re-perform a s-curve scan for the various points, calculate the corresponding Vcth threshold, WARNING : that has to be done without beam
bin/calibrate -f settings/IphcDescription.xml -n
WARNING : intern trigger should be used
<Register name="trigger_source"> 3 </Register> <!-- default value is 3 -->
-
- put back the beam, and take data (miniDAQ) for each voltage point. The threshold has to be update for each point, according to the previous scurve scan
./bin/miniDAQ --dqm -f settings/IphcDescription.xml -e 500000 --daq output.dat
WARNING : external trigger should be used
<Register name="trigger_source"> 5 </Register> <!-- default value is 3 -->
-
- for each point, check how evolve the number of strip
Rate scan
this idea of this scan is to increase the rate of particles, and see at which point the module starts to show inefficiencies. On take then data with the command
./bin/miniDAQ --dqm -f settings/IphcDescription.xml -e 500000 --daq output.dat
And the compare the number of cluster for a given amount of trigger, with the low rate case.
WARNING : for low rate values, it is difficult to know the exact rate from the monitoring of the Cyclo. The rate has to be determined from the scintillators themselves. This can be done from the trigger counter positioned on the NIM rack. It is counting the number of triggers for 10 seconds => division by 10 should give the trigger rate. Some caveat however :
- for this to work, the clock of the trigger and of the cyclo should be in perfect synch (for adjustments, see with Ulrich),
- there is a factor of 2 difference between the trigger rate and the real particle rate (1 bunch over two is ignored), there is a veto there (if I (Jeremy) understood properly). But we need to ask Ulrich for the details.
Link to the googlesheet with measurement points
link
test beam of the 19th of November 2019
Commissioning de la ligne
- Contrôle du faisceau, focus, steering, diffuser, profiler, si tout va bien ca ne va pas prendre beaucoup plus qu’une journée. Cette partie sera essentiellement exécuté par Jacky Schuler et Michel Pellicioli. Le but sera d’abord d'avoir le faisceau sur le Faraday cup, étudier les paramètres du faisceau
Trigger tests
Tests to be done in the lab
- Test scintillators with source. Characterise their response and verify they behave similarly. Same trigger rate for the same amplification,
- Verify carefully the NIM cards, crate and cables. Make sure every component is behaving as it should (no false contact)
- Rebuilt NIM logic carefully, with the controlled material, and test with a source
- preparation of a third scintillators
Tests to be done in the beam
- install a third scintillator, to control trigger efficiency and make rate studies.
- test individually the scintillators in the beam, characterise their response and verify they behave similarly. Check measured rate vs beam intensity, estimate efficiencies
- install the two scintillators and verify that the rates are the same. If the are not, invert in the telescope in two scintillators, to see if this is related to the position of the scintillator (to see if it is a acceptance/multiple scattering issue).
- synchronisation with the 42.5 MHz clock of the cyclo, check rate rates, make a variation of the coincidence windows
- study the synchronisation between 40 and 42.5 MHz (and possiblt 85 MHz * 40MHz?) simultaneously (important if we want to run the pixels at 40MHz) Understand the rates nad hte beam geometry, play with the focalisation of the beam.
Special request to the DAQ team : Can we have a multi hit TDC with DAQ ? Can we have bit pattern unit with DAQ?
Pixel telescope commissioning
Tests to be done in the lab
- test and calibrate the modules with the DTB and HV, following the pro
- test the moduel with a source : use external triggers and the DTB and test with signal. If scintillators not available, use random trigger with high frequancy.
- finalise the assambly and test of the DAQ (Laurents and Christian, with Caroline, on it)
Tests to be done in the beam
- test the whole system, if the telescope is running,
- test with the DTB, if the telescope is not running.
test beam of February 2020
test beam of October 2020
test beam of December 2020
Information
google doc
Latency values for the test beam of 12/2020
latency value |
run number |
20 |
249 |
21 |
250 |
22 |
259 |
23 |
261 |
24 |
262 |
25 |
263 |
26 |
264 |
27 |
265 |
28 |
266 |
29 |
267 |
30 |
268 |
31 |
269 |
32 |
270 |
33 |
271 |
34 |
272 |
35 |
273 |
36 |
274 |
37 |
275 |
38 |
276 |
39 |
277 |
40 |
278 |
41 |
279 |
42 |
280 |
43 |
281 |
Some study
study
test beam of January 2021
Information
google doc
Some study
study
Comparison with the test beam of December 2020 :
- december 2020 with wrong latence = like random trigger ? but there is no guarantee that all the modules were sending data for wbc=22. during that test beam, we had some runs without the DUT, for example run 284. on slides 15-18 : we see some correlation in x among the different modules. but not in y, why ? due to multiple scattering. especially for that run284, the beam was hitting the region of pixel overlap. On that run, the x profile of the beam is really similar on the 2 planes. But there is a factor 2.7 more clusters in the second plane than in the first one. remark : the cluster size in one direction can be greater than 4 on M4643, M3672 and M3028, but only in some rare cases for M3558.
- january 2021 with good latence even if we don't understand why it moves on Day2 (when we used the clock from the FC7). always with the DUT present.
with the DUT present, we see some region in the pixel where there is no signal, due to total absorption of the beam before arriving on the scintillators ?
test beam of March 2021
test with source of March 2021 : First correlation between the two planes of the telescope, with source
Information
These tests with a
90Sr radioactive source show correlations between the pixel planes after using new timing calibrations (
TBMPLLNoTokenPass + TBMPLL + ROCPLL).
Some study
correlations study
test beam of April 2021 : First correlation between the two planes of the telescope, with beam
test beam of June 2021
test beam of July 2021
Restart : November 2021
test beam of January 2022 : First correlation between the telescope and the DUT, with beam
google doc
test beam of End of June 2022 : First Test beam with the new box !
google doc
--
JeremyAndrea - 2019-07-17
--
CarolineCollard - 2021-01-18