Presentation is loading. Please wait.

Presentation is loading. Please wait.

A clustering algorithm for a generalised calorimeter

Similar presentations


Presentation on theme: "A clustering algorithm for a generalised calorimeter"— Presentation transcript:

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


Download ppt "A clustering algorithm for a generalised calorimeter"

Similar presentations


Ads by Google