Download presentation
Presentation is loading. Please wait.
Published byCharlotta Berglund Modified over 5 years ago
1
A clustering algorithm for a generalised calorimeter
Chris Ainsley University of Cambridge LC Simulation Workshop 9-10 December 2004, DESY, Germany
2
Order of service Layer-by-layer approach to clustering.
Separation of nearby charged/neutral clusters. Application to a generalised calorimeter. Clustering a Z event in the full CALICE calorimeter. Coding in the LCIO framework. Summary. Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
3
Layer-by-layer clustering: the algorithm
Form clusters by tracking closely-related hits (> 1/3 mip) layer-by-layer through calorimeter: for a given hit j in a given layer l, minimize the distance d w.r.t all hits k in layer l-1; if d < dist_max_ecal (Ecal) or dist_max_hcal (Hcal) for minimum d, assign hit j to same cluster as hit k which yields minimum; if not, repeat with all hits in layer l-2, then, if necessary, layer l-3, etc., right through to first layer of Ecal; after iterating over all hits j, seed new clusters with those still unassigned, grouping those within prox_seed_max into same seed; if in Ecal, calculate weighted centre of each cluster’s hits in layer l (weight by energy (analogue) or density (digital)) and assign a direction cosine to each hit along the line joining its cluster’s centre in the seed layer (or (0,0,0) if it’s a seed) to its cluster’s centre in layer l; if in Hcal, assign a direction cosine to each hit along the line from the hit to which each is linked (or (0,0,0) if it’s a seed) to the hit itself; try to recover backward-spiralling track-like, and low multiplicity ‘halo’, cluster fragments … Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
4
5 GeV + event at 3 cm separation
Reconstructed clusters True particle clusters Cell-size = 1×1 cm2 (Si/W Ecal; RPC Hcal). dist_max_ecal = 2.0 cm; dist_max_hcal = 3.0 cm. 98 % of event energy maps black black (+) and red red () . Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
5
Same event, different clustering cuts
Reconstructed clusters True particle clusters dist_max_ecal = 3.0 cm; dist_max_hcal = 1.0 cm. Now 78 % of event energy maps black red () and red black (+) . 22 % “confusion”. Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
6
Layer-by-layer clustering in a generalised detector
Approach requires layer index to vary smoothly: e.g. in TESLA detector, index changes abruptly at stave boundaries in Ecal barrel (layers overlap at 45°); at barrel/endcap boundaries in Ecal & Hcal (layers overlap at 90°). To apply layer-by-layer clustering, need a scheme to overcome this. Achieved by replacing layer index with pseudolayer index in regions where layer index discontinuities occur. Same-pseudolayer indexed hits defined by closed shells of octagonal prisms coaxial with z-axis. Simple extension to cope with any arbitrary n-fold rotationally-symmetric, layered calorimeter: octagonal prisms → n-polygonal prisms. Locations/orientations of shells automatically set by locations/orientations of real, physical, sensitive layers. Just takes n and layer-spacings in barrel and endcaps as input. Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
7
How the generalised detector shapes up
Transverse section Longitudinal section Solid blue lines aligned along real, physical, sensitive layers. Dot-dashed magenta lines bound shell containing hits with same pseudolayer index, l. Pseudostaves automatically encoded by specifying n, f1 and Rl and Zl ( l). Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
8
Reconstructed clusters True particle clusters
91 GeV Z → u,d,s jets event Reconstructed clusters True particle clusters Reconstruction in full detector (Si/W Ecal; RPC Hcal). dist_max_ecal = 2.0 cm; dist_max_hcal = 3.0 cm. Good 1:1 correspondence between reconstructed and true clusters (5 highest energy clusters shown). Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
9
Clustering in LCIO: a modular approach
Modules to do the reconstruction: CalorimeterConfig.cc → (re)defines calorimeter layer positions; HitToCell.cc → merges same-cell hits; CellToStore.cc → stores cells above energy threshold; StoreCalibration.cc → calibrates the stored cell energies; StoreToStoreOrdered.cc → ranks stored cells by weight in each pseudolayer (in preparation for clustering); StoreOrderedToCluster1.cc → does the coarse cluster reconstruction; Cluster1ToCluster2.cc → attempts matching of backward-spiralling track-like cluster fragments onto forward-propagating parent clusters; Cluster2ToCluster3.cc → attempts to reunite low multiplicity “halo’ cluster fragments with parent clusters. Additional module to access MC truth: StoreOrderedToMCParticle.cc → forms the true clusters. Plotting modules: ClusterToClusterOrdered.cc → ranks reconstructed clusters by energy in each pseudostave (in preparation for plotting); PlotRecoClusters.cc → plots reconstructed clusters colour-correlated with energy-rank in pseudostave; MCParticleToMCParticleOrdered.cc → ranks true clusters by energy in each pseudostave (in preparation for plotting); PlotTrueClusters.cc → plots true clusters colour-correlated with energy-rank in pseudostave; PlotPerformance.cc → plots the distribution of energy between true and reconstructed clusters. Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
10
Modifying the detector
Given detector configuration, clustering governed by global constants set in header file LCIOFrameSteer.h ‘tweaks’ go in here. Layer positions fed in through CalorimeterConfig.cc. To apply algorithm to new detector designs, just need to modify these two files. Let’s see how … Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
11
Snippets of code from LCIOFrameSteer.h
Set the detector parameters: const int nlayers_ecal = 40; // number of Ecal (pseudo)layers const int nlayers_hcal = 40; // number of Hcal (pseudo)layers const int npseudostaves_barrel = 8; // degree of rotational symmetry of barrel const double phi_1 = M_PI/2.; // azimuthal angle of first barrel (pseudo)stave Set the Ecal type: const string ecal = “siw”; // “siw” => Si/W Ecal // “maps” => MAPS Ecal Set the Hcal type: const string hcal = “rpc”; // “rpc” => Fe/RPC Hcal // “scint” => Fe/scintillator Hcal Set the mode of operation: const string mode = “a/d”; // “a/a” => analogue Ecal / analogue Hcal // “a/d” => analogue Ecal / digital Hcal // “d/a” => digital Ecal / analogue Hcal // “d/d” => digital Ecal / digital Hcal Set the clustering cuts: const double dist_max_ecal = 20.0 ; // mm // maximum “d” for cluster continuity across Ecal // layers const double dist_max_hcal = 30.0 ; // mm // maximum “d” for cluster continuity across Hcal const double prox_seed_max = 20.0 ; // mm // maximum radius of new cluster seed const double prox_merge_max = 20.0; // mm // maximum proximity for backward-spiralling track- // matching const double cos_gamma_max = 0.25; // minimum angle between direction cosines for // backward-spiralling track-matching const int cluster_size_min = 10; // maximum cluster size to be considered “halo’ const double tan_beta_max = 6.0; // maximum angle for ‘halo’ recovery Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
12
Snippets of code from CalorimeterConfig.cc
Set the layer positions in the r- and z-directions (e.g. TESLA TDR design): // Create collections for the r and z layers LCCollectionVec* siteOfRLayerVec = new LCCollectionVec(LCIO::LCFLOATVEC); LCCollectionVec* siteOfZLayerVec = new // Fill the collections with their positions for (int l=0; l<=1+nlayers_ecal+nlayers_hcal; l++) { LCFloatVec* siteOfRLayer = new LCFloatVec; LCFloatVec* siteOfZLayer = new LCFloatVec; if (l<=30) { // layers 1-30 (Ecal) + layer 0 siteOfRLayer->push_back( (3.9* l)); siteOfZLayer->push_back( (3.9* l)); } else if (l >30 && l<=nlayers_ecal) { // (Ecal) siteOfRLayer->push_back( (6.7* (l -30))); siteOfZLayer->push_back( (6.7* (l -30))); else { // layers (Hcal) + layer 81 siteOfRLayer->push_back( (24.5* (l -41))); siteOfZLayer->push_back( (24.5* (l -41))); } siteOfRLayerVec->push_back(siteOfRLayer); siteOfZLayerVec->push_back(siteOfZLayer); // And save the collections evt->addCollection(siteOfRLayerVec,"site_rlayers"); evt->addCollection(siteOfZLayerVec, "site_zlayers"); Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
13
Summary & outlook R&D on clustering algorithm for generalised calorimeter on-going. Approach utilizes the high granularity of the calorimeter cells to “track” clusters (pseudo)layer-by-(pseudo)layer. Pseudolayer concept flexibility to cope with alternative layered geometries without having to recode algorithm itself. Applicable to any (likely) detector design comprising an n-fold rotationally symmetric barrel closed by endcaps → just to specify need n and layer-spacings. Written in C++; LCIO (v1.3) compliant; modularised input parameters kept distinct from reconstruction. Will aim to make code publicly available soon. Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
14
That’s all folks… The end Chris Ainsley
LC Simulation Workshop 9-10 December 2004, DESY, Germany
15
Cluster-tracking between pseudolayers
From the pseudobarrel From the pseudoendcap Chris Ainsley LC Simulation Workshop 9-10 December 2004, DESY, Germany
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.