Primary objective: test of a megatile board.

Components

  • HBUs:
    • Mainz Megatile
    • Single HBU (HBU5_35)
    • Single HBU (HBU5_32)
  • AIDA TLU
  • Alpide telescope - 6 planes
  • BIF - reading independent triggers from finger scintillators
  • CCC with synchronous triggerID protocol (svn branch: ScCalo_DAQ/ccc/branches/AIDA-TLU_TrigID )
  • mini-LDA - modification for triggerID from CCC (svn branch ScCalo_DAQ/xlda/branches/ATLU-TrigID )
  • moving table

Configurations

Configuration 1 (MIP scan with table?):

  • HBU5_35 at slot 2
  • Megatile HBU slot 5
  • HBU5_32 at slot 8

Configuration 2 (after run 68111? Uniformity first part):

  • Megatile at slot 1
  • HBU5_35 at slot 4
  • HBU5_32 at slot 8 (??)

Configuration 3 (after 68448?)

  • HBU5_?? at slot 1
  • Megatile HBU slot 2
  • HBU5_?? at slot 3

Configuration 4: (after 68980? absorber runs)

  • HBU5_?? slot 4
  • Megatile Slot 5
  • HBU5_?? slot 6

Configuration 5: (After 69006, uniformity sccan)

  • Megatile at slot 1
  • HBU5_?? at slot 4
  • HBU5_?? at slot 7

Telescope geometry

Detailed position of the components is documented in the elog:

https://ttfinfo.desy.de/elog/XMLlist?file=/CALICEelog-sec/data/2020/35/24.08/2020-08-24T02:18:54-01.xml&xsl=/elogbook/xsl/elog.xsl&picture=true

The distance measurement were made after the absorber run with configuration: 
 Single tile in slot 4
 Megatile in slot 5
 Single tile in slot 6
 
The measurements are excluding the depth of each element: the distance are from the exit point of 
 the first element to the entry point of the second element (except for the distance between 
 slots in the airstack where the 2.5 cm distances are between two entry point of cassettes). 
 trigger fingers scintillator thickness: 1.0 cm
 telescope scintillator trigger: 0.5 cm
 telescope plane thickness: 1.5 cm
 
All distances are in cm. 
 
.                                    BEAM DIRECTION 
.    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
. 
.      Air stack               Telescope           Telescope  Scint.    Trig. fingers 
.      |   |   | 
.      |   |   |               |      |   |        |   |   | 
.      |   |   |               |      |   |        |   |   | 
.      |2.5|2.5|     101.5     | 24.6 |2.9|  48.9  |3.1|3.4|0.5|1.8| 6.0 |1.0| 
.      |   |   |               |      |   |        |   |   | 
.      |   |   |               |      |   |        |   |   | 
.      |   |   | 
. Slot 6   5   4              P6     P5  P4       P3  P2  P1   R   L     V   H 
 
Note: the tile uniformity measurements were done with configuration: 
 Megatile in slot 1
 Single tile in slot 4
 Single tile in slot 8 (7 for the second part).
 
For reference, the MIP scans were done with configuration: 
 Single tile in slot 2
 Megatile in slot 5
 Single tile in slot 8
However, the telescope was not used for these measurements, and its position was adjusted (plane 
 6 moved by 10-20 cm) before starting the uniformity scan. 
 
Alpide plane orderplane_IDZ position
1500 mm
25149 mm
35295 mm
453599 mm
554643 mm
655904 mm

This setup was probably not changed. The last rotation of the telescope was on Saturday before lunch.

Prealignment

The prealignment procedure is described in the corrywreckan manual (link). The example of prealignment configuration and geometry files is below. Only the [Prealignment] module is necessary.

Configuration file
[Corryvreckan]
log_level = "INFO"
log_format = "DEFAULT"

number_of_tracks = 200000
detectors_file = "geometries/01-prealignment.geo"
histogram_file = "01-prealignment.root"

[EventLoaderEUDAQ2]
file_name = "/home/kvas/ahcal/data/202008/eudaqRaw/online_Run069003_200823223632.raw"
adjust_event_times = [["TluRawDataEvent", -10us, +10us]]
shift_triggers = 0

[ClusteringSpatial]
log_level = "INFO"
use_trigger_timestamp = true

[Prealignment]
method = gauss_fit

Geometry file
[TLU_0]
orientation = 0,0,0
orientation_mode = "xyz"
position = 0,0,0
role = "auxiliary"
time_resolution = 1ns
type = "tlu"

[altel_50]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = 0,0,0
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_51]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = 0,0,49mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_52]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = 0,0,95mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_53]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = 0mm,0mm,599mm
spatial_resolution = 5um,5um
time_resolution = 10us
role = "reference"
type = "altel"

[altel_54]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position =  0,0,643mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_55]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = 0,0,904mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

At this point, the orientation of all layers should be 0, as well as X and Y positions. Tracking is not needed for prealignment at this stage.

corry output
[F:Prealignment:altel_51] Detector position after shift in x = -338.083um , and in y = 238.373um
[F:Prealignment:altel_52] Detector position after shift in x = -455.16um , and in y = -332.888um
[F:Prealignment:altel_53] Detector position after shift in x = -1.61251mm , and in y = -22.6624um
[F:Prealignment:altel_54] Detector position after shift in x = -1.78642mm , and in y = -120.734um
[F:Prealignment:altel_55] Detector position after shift in x = -1.70922mm , and in y = 160.981um

The coordinates of the new position need to be copied in the geometry file. They are then used in the alignment

Alignment

The alignment can be done using "AlignmentTrackChi2" module, which requires a tracking module to be loaded beforehand. The tracking has an important parameter spatial_cut_rel, which controls the distance of the track from the cluster position. It is a multiplication factor to a spatial_resolution, which is defined in the geometry file. 

The alignment is an iterative process, where the position in the geometry file is iteratively updated and following parameters are to be controlled in the configuration file:

  • [Tracking4D]
    spatial_cut_rel
  • [AlignmentTrackChi2] 
    align_orientation = false
    align_position = true

Configuration file
[Corryvreckan]
log_level = "INFO"
log_format = "DEFAULT"

number_of_tracks = 200000
detectors_file = "geometries/02-alignment.geo"
histogram_file = "01-prealignment.root"

[EventLoaderEUDAQ2]
file_name = "/home/kvas/ahcal/data/202008/eudaqRaw/online_Run069003_200823223632.raw"
adjust_event_times = [["TluRawDataEvent", -10us, +10us]]
shift_triggers = 0

[ClusteringSpatial]
log_level = "INFO"
use_trigger_timestamp = true

[Tracking4D]
exclude_dut = true
momentum = 5.0GeV
min_hits_on_track = 6
spatial_cut_rel = 50

[AlignmentTrackChi2]
iterations = 5
align_orientation = false
align_position = true
Geometry file with updated coordinates
[TLU_0]
orientation = 0,0,0
orientation_mode = "xyz"
position = 0,0,0
role = "auxiliary"
time_resolution = 1ns
type = "tlu"

[altel_50]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = 0,0,0
spatial_resolution = 5um,5um
time_resolution = 10us
role = "reference"
type = "altel"

[altel_51]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = -338.27um,238.942um,49mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_52]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = -454.4um,-330.997um,95mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_53]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = -1.612370mm,-23.461um,599mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_54]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position =  -1.79023mm, -127.299um,643mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

[altel_55]
material_budget = 0.00075
number_of_pixels = 1024,512
orientation = 0deg,0deg,0deg
orientation_mode = "xyz"
pixel_pitch = 29.24um,26.88um
position = -1.705mm,166.221um,904mm
spatial_resolution = 5um,5um
time_resolution = 10us
type = "altel"

The results of various runs:

Output of corry alignment for run 69003
# first run after prealignment
[F:AlignmentTrackChi2] altel_51 new alignment: T(-338.27um,238.942um,49mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_52 new alignment: T(-454.4um,-330.997um,95mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_53 new alignment: T(-1.61237mm,-23.461um,599mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_54 new alignment: T(-1.79023mm,-127.299um,643mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_55 new alignment: T(-1.705mm,166.221um,904mm) R(0,0,0)

#second run after feeding the above positions to the geo file and spatial_cut_rel = 20
[F:AlignmentTrackChi2] altel_51 new alignment: T(-339.806um,236.827um,49mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_52 new alignment: T(-454.266um,-331.035um,95mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_53 new alignment: T(-1.60679mm,-18um,599mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_54 new alignment: T(-1.78325mm,-119.899um,643mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_55 new alignment: T(-1.69389mm,177.198um,904mm) R(0,0,0)

#third run after feeding the above positions to the geo file and spatial cut_rel=10
TODO (missed)

#4th run with spatial cut_rel=5 (only 14% of tracks!)
[F:AlignmentTrackChi2] altel_51 new alignment: T(-339.737um,236.704um,49mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_52 new alignment: T(-454.009um,-330.855um,95mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_53 new alignment: T(-1.60485mm,-16.145um,599mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_54 new alignment: T(-1.78112mm,-117.776um,643mm) R(0,0,0)
[F:AlignmentTrackChi2] altel_55 new alignment: T(-1.69084mm,180.256um,904mm) R(0,0,0)


#run with rotation enabled, cut_rel = 10
altel_51 new alignment: T(-335.953um,260.063um,49mm) R(0.575651deg,0.686461deg,-0.379699deg)
altel_52 new alignment: T(-455.167um,-320.44um,95mm) R(-1.71733deg,-0.252503deg,-0.177101deg)
altel_53 new alignment: T(-1.60733mm,-8.494um,599mm) R(-0.133786deg,2.46028deg,-0.183117deg)
altel_54 new alignment: T(-1.78433mm,-125.421um,643mm) R(0.0582125deg,-2.64615deg,-0.0126051deg)
altel_55 new alignment: T(-1.69716mm,168.578um,904mm) R(0.242304deg,-2.81087deg,-0.0114592deg)

#run with rotation enabled, cut_rel = 20 (just to test wider acceptance)
[F:AlignmentTrackChi2] altel_51 new alignment: T(-335.163um,262.781um,49mm) R(1.10077deg,-1.13446deg,-0.429375deg)
[F:AlignmentTrackChi2] altel_52 new alignment: T(-453.911um,-317.019um,95mm) R(-2.118deg,1.50951deg,-0.235486deg)
[F:AlignmentTrackChi2] altel_53 new alignment: T(-1.59793mm,3.574um,599mm) R(-3.30465deg,4.46466deg,-0.337358deg)
[F:AlignmentTrackChi2] altel_54 new alignment: T(-1.77319mm,-112.924um,643mm) R(3.30889deg,-4.71218deg,-0.162491deg)
[F:AlignmentTrackChi2] altel_55 new alignment: T(-1.6837mm,179.628um,904mm) R(3.89949deg,-5.35257deg,-0.153896deg)
# It is not probable, that this result is correct (it is unlikely we had 5 degree angle). TODO!

The finetuning of the alignment is not an easy task. It even looks, that the position slightly changed during the change of the setup.

The alignment seems to require high amount of tracks. A simple utility from https://github.com/jkvas/eudaq_ahcal (euCliAppender) can be used to combine two eudaq raw files (online_*). THe The TLU timestamps are altered in order to the trigger not to go back in time.

Results obtained for combined runs 68886-68979

  • altel_51 new alignment: T(-311.737um,256.864um,49mm) R(0,0,0)
  • altel_52 new alignment: T(-401.199um,-320.404um,95mm) R(0,0,0)
  • altel_53 new alignment: T(-1.2791mm,-1.878um,599mm) R(0,0,0)
  • altel_54 new alignment: T(-1.43096mm,-113.238um,643mm) R(0,0,0)
  • altel_55 new alignment: T(-1.19757mm,182.583um,904mm) R(0,0,0)

and for runs 69015-69111 differ only slightly:

  • altel_51 new alignment: T(-312.645um,257.308um,49mm) R(0,0,0)
  • altel_52 new alignment: T(-403.294um,-322.603um,95mm) R(0,0,0)
  • altel_53 new alignment: T(-1.28788mm,-21.696um,599mm) R(0,0,0)
  • altel_54 new alignment: T(-1.44092mm,-135.494um,643mm) R(0,0,0)
  • altel_55 new alignment: T(-1.21396mm,151.105um,904mm) R(0,0,0)

Geometry with enabled rotation produce rotations, that seem to be too big. This could be caused by incorrectly noted Z positions of the telescope planes:

  • altel_51 new alignment:T(-308.309um,262.702um,49mm) R(-2.30633deg,0.871755deg,-0.42651deg)
  • altel_52 new alignment: T(-401.09um,-316.699um,95mm) R(-3.30728deg,1.22687deg,-0.230845deg)
  • altel_53 new alignment: T(-1.27337mm,7.248um,599mm) R(-3.97638deg,4.32067deg,-0.288198deg)
  • altel_54 new alignment: T(-1.42425mm,-108.975um,643mm) R(-4.00497deg,4.65471deg,-0.114592deg)
  • altel_55 new alignment: T(-1.19104mm,186.033um,904mm) R(4.33758deg,-5.36208deg,-0.0853707deg)

Both geometries without rotation differ only slightly, the improves the chi2/ndof significantly, however rotation values are not realistic:

Tracking efficiency

The tracking is not 100% efficient. From the first look at the data, the track is sometimes missing. Overall the tracking efficiency when the hit in the last ALPIDE layer is required is shown here:

A brief look at run 68668 (the run with almost lshows, that the last alpide layer (leyer with number 55) has a problem - there is almost no hit - only some hot pixels are there:

When the requirement for presence of the last layer is lifted, the tracking efficiency show a significant decrease of efficiency with increasing number of required hits.

There is another ~5% of efficiency loss due to to multiple tracks in the event




  • No labels