150 likes | 169 Views
Explore a novel approach to clustering in calorimeters, focusing on tracking hits through layers and optimizing cluster formation. Implement this algorithm in the LCIO framework for accurate energy mapping in particle events.
E N D
A clustering algorithm for a generalised calorimeter Chris Ainsley University of Cambridge <ainsley@hep.phy.cam.ac.uk> LC Simulation Workshop 9-10 December 2004, DESY, Germany
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. LC Simulation Workshop 9-10 December 2004, DESY, Germany
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 … LC Simulation Workshop 9-10 December 2004, DESY, Germany
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 redred() . LC Simulation Workshop 9-10 December 2004, DESY, Germany
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 blackred()and red black (+). • 22 % “confusion”. LC Simulation Workshop 9-10 December 2004, DESY, Germany
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. LC Simulation Workshop 9-10 December 2004, DESY, Germany
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. • Pseudostavesautomatically encoded by specifying n, f1 and Rl and Zl( l). LC Simulation Workshop 9-10 December 2004, DESY, Germany
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). LC Simulation Workshop 9-10 December 2004, DESY, Germany
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. Clustering in LCIO: a modular approach LC Simulation Workshop 9-10 December 2004, DESY, Germany
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 … LC Simulation Workshop 9-10 December 2004, DESY, Germany
Set the detector parameters: constintnlayers_ecal = 40; // number of Ecal (pseudo)layers constintnlayers_hcal = 40; // number of Hcal (pseudo)layers constintnpseudostaves_barrel = 8; // degree of rotational symmetry of barrel constdoublephi_1 = M_PI/2.; // azimuthal angle of first barrel (pseudo)stave Set the Ecal type: conststringecal = “siw”; // “siw” => Si/W Ecal // “maps” => MAPS Ecal Set the Hcal type: conststringhcal = “rpc”; // “rpc” => Fe/RPC Hcal // “scint” => Fe/scintillator Hcal Set the mode of operation: conststringmode = “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: constdoubledist_max_ecal = 20.0 ; // mm // maximum “d” for cluster continuity across Ecal // layers constdoubledist_max_hcal = 30.0 ; // mm // maximum “d” for cluster continuity across Hcal // layers constdoubleprox_seed_max = 20.0 ; // mm // maximum radius of new cluster seed constdoubleprox_merge_max = 20.0; // mm // maximum proximity for backward-spiralling track- // matching constdoublecos_gamma_max = 0.25; // minimum angle between direction cosines for // backward-spiralling track-matching constintcluster_size_min = 10; // maximum cluster size to be considered “halo’ constdoubletan_beta_max = 6.0; // maximum angle for ‘halo’ recovery Snippets of code from LCIOFrameSteer.h LC Simulation Workshop 9-10 December 2004, DESY, Germany
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 LCCollectionVec(LCIO::LCFLOATVEC); // 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(1698.85+(3.9* l)); siteOfZLayer->push_back(2831.10+(3.9* l)); } else if (l >30 && l<=nlayers_ecal) { // 31-40 (Ecal) siteOfRLayer->push_back(1815.85+(6.7* (l -30))); siteOfZLayer->push_back(2948.10+(6.7* (l -30))); } else { // layers 41-80 (Hcal) + layer 81 siteOfRLayer->push_back(1931.25+(24.5* (l -41))); siteOfZLayer->push_back(3039.25+(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"); Snippets of code from CalorimeterConfig.cc LC Simulation Workshop 9-10 December 2004, DESY, Germany
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. LC Simulation Workshop 9-10 December 2004, DESY, Germany
The end That’s all folks… LC Simulation Workshop 9-10 December 2004, DESY, Germany
Cluster-tracking between pseudolayers From the pseudobarrel From the pseudoendcap LC Simulation Workshop 9-10 December 2004, DESY, Germany