Source code for geometry.v1.HEC



__all__ = ["getHECCfg"]


from GaugiKernel.constants import mm,MeV,pi
from CaloCell.CaloDefs import Detector, CaloSampling

from .Calorimeter import Calorimeter
from .PhysicalVolume import PhysicalVolume, Plates
from .SensitiveDetector import SensitiveDetector

import os



[docs] def getHECCfg(left_side=False): sign = -1 if left_side else 1 side_name = 'B' if left_side else 'A' basepath = os.environ['LORENZETTI_GEOMETRY_DATA_DIR'] hec_start = 4262*mm # # HEC1 # nlayers=9; absorber=12.5*mm; gap=8.5*mm; zsize=nlayers*(absorber+gap) hec1_zsize = zsize hec1_pv = PhysicalVolume( Name = "FCal::HEC1::"+side_name, Plates = Plates.Vertical, # Logical type AbsorberMaterial = "G4_Cu", # absorber GapMaterial = "liquidArgon", # gap NofLayers = nlayers, # 16s (max 16) AbsorberThickness = absorber, # abso GapThickness = gap, # gap RMin = 372*mm,# radio min, RMax = 2030*mm,# radio max ZSize = zsize , X=0,Y=0,Z= sign * (hec_start + zsize/2), # x,y,z Visualization = True, Color = 'salmon' ) hec1_sv0 = SensitiveDetector( hec1_pv, EtaMax = sign*2.50 , Segment = 0, DeltaEta = 0.1, DeltaPhi = pi/32 ) hec1_sv1 = SensitiveDetector( hec1_pv, EtaMin = hec1_sv0.EtaMax , Segment = 1, DeltaEta = 0.2, DeltaPhi = pi/16 ) # Configure the electronic frontend and the detector parameters hec1_det0 = Calorimeter( hec1_sv0, -21, 3, -2, # sensitive volume, bunch start, bunch end, sampling start, CollectionKey = "Collection_HEC1_0" + side_name, # collection key Detector = Detector.TTHEC, # detector type Sampling = CaloSampling.HEC1, # sampling type Shaper = basepath + "/pulseLar.dat", # pulse shaper Noise = 250*MeV, # electronic noise Samples = 5, # how many samples OFWeightsEnergy = [-0.0000853580, 0.265132, 0.594162, 0.389505, 0.124353], # optimal filter parameters for energy estimation OFWeightsTime = [-0.0000853580, -12.870312690734863, -27.39136505126953, 8.075883865356445, 13.768877029418945] # EMB1 ATLAS sample to test (fake first number to add to 5) ) # Configure the electronic frontend and the detector parameters hec1_det1 = Calorimeter( hec1_sv1, -21, 3, -2, # sensitive volume, bunch start, bunch end, sampling start, CollectionKey = "Collection_HEC1_1"+ side_name, # collection key Detector = Detector.TTHEC, # detector type Sampling = CaloSampling.HEC1, # sampling type Shaper = basepath + "/pulseLar.dat", # pulse shaper Noise = 250*MeV, # electronic noise Samples = 5, # how many samples OFWeightsEnergy = [-0.0000853580, 0.265132, 0.594162, 0.389505, 0.124353], # optimal filter parameters for energy estimation OFWeightsTime = [-0.0000853580, -12.870312690734863, -27.39136505126953, 8.075883865356445, 13.768877029418945] # EMB1 ATLAS sample to test (fake first number to add to 5) ) # # HEC2 # nlayers=16; absorber=12.5*mm; gap=8.5*mm; zsize=nlayers*(absorber+gap) hec2_zsize = zsize hec2_pv = PhysicalVolume( Name = "FCal::HEC2::"+side_name, Plates = Plates.Vertical, # Logical type AbsorberMaterial = "G4_Cu", # absorber GapMaterial = "liquidArgon", # gap NofLayers = nlayers, # 16s (max 16) AbsorberThickness = absorber, # abso GapThickness = gap, # gap RMin = 475*mm,# radio min, RMax = 2030*mm,# radio max ZSize = zsize , X=0,Y=0,Z= sign * (hec_start + hec1_zsize + hec1_zsize +zsize/2), # x,y,z Visualization = True, Color = 'violetred' ) hec2_sv0 = SensitiveDetector( hec2_pv, EtaMax = sign*2.50 , Segment = 0, DeltaEta = 0.1, DeltaPhi = pi/32 ) hec2_sv1 = SensitiveDetector( hec2_pv, EtaMin = hec2_sv0.EtaMax , Segment = 1, DeltaEta = 0.2, DeltaPhi = pi/16 ) # Configure the electronic frontend and the detector parameters hec2_det0 = Calorimeter( hec2_sv0, -21, 3, -2, # sensitive volume, bunch start, bunch end, sampling start, CollectionKey = "Collection_HEC2_0" + side_name, # collection key Detector = Detector.TTHEC, # detector type Sampling = CaloSampling.HEC2, # sampling type Shaper = basepath + "/pulseLar.dat", # pulse shaper Noise = 400*MeV, # electronic noise Samples = 5, # how many samples OFWeightsEnergy = [-0.0000853580, 0.265132, 0.594162, 0.389505, 0.124353], # optimal filter parameters for energy estimation OFWeightsTime = [-0.0000853580, -12.870312690734863, -27.39136505126953, 8.075883865356445, 13.768877029418945] # EMB1 ATLAS sample to test (fake first number to add to 5) ) # Configure the electronic frontend and the detector parameters hec2_det1 = Calorimeter( hec2_sv1, -21, 3, -2, # sensitive volume, bunch start, bunch end, sampling start, CollectionKey = "Collection_HEC2_1"+ side_name, # collection key Detector = Detector.TTHEC, # detector type Sampling = CaloSampling.HEC2, # sampling type Shaper = basepath + "/pulseLar.dat", # pulse shaper Noise = 400*MeV, # electronic noise Samples = 5, # how many samples OFWeightsEnergy = [-0.0000853580, 0.265132, 0.594162, 0.389505, 0.124353], # optimal filter parameters for energy estimation OFWeightsTime = [-0.0000853580, -12.870312690734863, -27.39136505126953, 8.075883865356445, 13.768877029418945] # EMB1 ATLAS sample to test (fake first number to add to 5) ) # # HEC3 # nlayers=16; absorber=50*mm; gap=8.5*mm; zsize=nlayers*(absorber+gap) hec3_zsize = zsize hec3_pv = PhysicalVolume( Name = "FCal::HEC3::"+side_name, Plates = Plates.Vertical, # Logical type AbsorberMaterial = "G4_Cu", # absorber GapMaterial = "liquidArgon", # gap NofLayers = nlayers, # 16s (max 16) AbsorberThickness = absorber, # abso GapThickness = gap, # gap RMin = 475*mm,# radio min, RMax = 2030*mm,# radio max ZSize = zsize , X=0,Y=0,Z= sign * (hec_start + hec1_zsize + hec1_zsize + hec2_zsize + zsize/2), # x,y,z Visualization = True, Color = 'orangered' ) hec3_sv0 = SensitiveDetector( hec3_pv, EtaMax = sign*2.50 , Segment = 0, DeltaEta = 0.1, DeltaPhi = pi/32 ) hec3_sv1 = SensitiveDetector( hec3_pv, EtaMin = hec3_sv0.EtaMax , Segment = 1, DeltaEta = 0.2, DeltaPhi = pi/16 ) # Configure the electronic frontend and the detector parameters hec3_det0 = Calorimeter( hec3_sv0, -21, 3, -2, # sensitive volume, bunch start, bunch end, sampling start, CollectionKey = "Collection_HEC3_0" + side_name, # collection key Detector = Detector.TTHEC, # detector type Sampling = CaloSampling.HEC3, # sampling type Shaper = basepath + "/pulseLar.dat", # pulse shaper Noise = 250*MeV, # electronic noise Samples = 5, # how many samples OFWeightsEnergy = [-0.0000853580, 0.265132, 0.594162, 0.389505, 0.124353], # optimal filter parameters for energy estimation OFWeightsTime = [-0.0000853580, -12.870312690734863, -27.39136505126953, 8.075883865356445, 13.768877029418945] # EMB1 ATLAS sample to test (fake first number to add to 5) ) # Configure the electronic frontend and the detector parameters hec3_det1 = Calorimeter( hec3_sv1, -21, 3, -2, # sensitive volume, bunch start, bunch end, sampling start, CollectionKey = "Collection_HEC3_1"+ side_name, # collection key Detector = Detector.TTHEC, # detector type Sampling = CaloSampling.HEC3, # sampling type Shaper = basepath + "/pulseLar.dat", # pulse shaper Noise = 250*MeV, # electronic noise Samples = 5, # how many samples OFWeightsEnergy = [-0.0000853580, 0.265132, 0.594162, 0.389505, 0.124353], # optimal filter parameters for energy estimation OFWeightsTime = [-0.0000853580, -12.870312690734863, -27.39136505126953, 8.075883865356445, 13.768877029418945] # EMB1 ATLAS sample to test (fake first number to add to 5) ) hec1 = [hec1_det0, hec1_det1] hec2 = [hec2_det0, hec2_det1] hec3 = [hec3_det0, hec3_det1] return [hec1, hec2, hec3]