Skip to content
Snippets Groups Projects
Commit 8470ad6c authored by John Derek Chapman's avatar John Derek Chapman Committed by Graeme Stewart
Browse files

src/TileHitsTestTool.cxx (processEvent): temporary patch to skip E4' cells...

src/TileHitsTestTool.cxx (processEvent): temporary patch to skip E4' cells which are not yet described in TileDetDescrManager. ATLASSIM-1835 Tagging G4AtlasTests-01-00-15-01 (G4AtlasTests-01-00-15-01)
parent 52c18a89
No related merge requests found
......@@ -9,7 +9,17 @@ def PixelHitsTestTool(name="PixelHitsTestTool", **kwargs):
def SCT_HitsTestTool(name="SCT_HitsTestTool", **kwargs):
kwargs.setdefault("CollectionName", "SCT_Hits")
return CfgMgr.SiHitsTestTool(name, **kwargs)
def TrtHitsTestTool(name="TRT", **kwargs):
def TrtHitsTestTool(name="TrtHitsTestTool", **kwargs):
kwargs.setdefault("CollectionName", "TRTUncompressedHits")
return CfgMgr.TrtHitsTestTool(name, **kwargs)
def PileupPixelHitsTestTool(name="PileupPixelHitsTestTool", **kwargs):
kwargs.setdefault("CollectionName", "PileupPixelHits")
return CfgMgr.SiHitsTestTool(name, **kwargs)
def PileupSCT_HitsTestTool(name="PileupSCT_HitsTestTool", **kwargs):
kwargs.setdefault("CollectionName", "PileupSCT_Hits")
return CfgMgr.SiHitsTestTool(name, **kwargs)
def PileupTrtHitsTestTool(name="PileupTrtHitsTestTool", **kwargs):
kwargs.setdefault("CollectionName", "PileupTRTUncompressedHits")
return CfgMgr.TrtHitsTestTool(name, **kwargs)
## def LArHitsTestTool(name="LArHitsTestTool", **kwargs):
## return CfgMgr.LArHitsTestTool(name, **kwargs)
......
......@@ -4,6 +4,9 @@ from AthenaCommon.CfgGetter import addTool
addTool("G4AtlasTests.G4AtlasTestsConfig.PixelHitsTestTool", "PixelHitsTestTool")
addTool("G4AtlasTests.G4AtlasTestsConfig.SCT_HitsTestTool", "SCT_HitsTestTool")
addTool("G4AtlasTests.G4AtlasTestsConfig.TrtHitsTestTool", "TrtHitsTestTool")
addTool("G4AtlasTests.G4AtlasTestsConfig.PileupPixelHitsTestTool", "PileupPixelHitsTestTool")
addTool("G4AtlasTests.G4AtlasTestsConfig.PileupSCT_HitsTestTool", "PileupSCT_HitsTestTool")
addTool("G4AtlasTests.G4AtlasTestsConfig.PileupTrtHitsTestTool", "PileupTrtHitsTestTool")
#addTool("G4AtlasTests.G4AtlasTestsConfig.LArHitsTestTool", "LArHitsTestTool")
addTool("G4AtlasTests.G4AtlasTestsConfig.EMBHitsTestTool", "EMBHitsTestTool")
addTool("G4AtlasTests.G4AtlasTestsConfig.EMECHitsTestTool", "EMECHitsTestTool")
......
from AthenaCommon.AppMgr import ServiceMgr
if not hasattr(ServiceMgr, 'THistSvc'):
from GaudiSvc.GaudiSvcConf import THistSvc
ServiceMgr += THistSvc("THistSvc")
ServiceMgr.THistSvc.Output += ["truth DATAFILE='truth.root' OPT='RECREATE'"]
# note: some of these tests will need an active DecDescManager
# so please use something like
# preExec='simFlags.ReleaseGeoModel=False;'
# with your transform
from AthenaCommon.AlgSequence import AlgSequence
job = AlgSequence()
if not hasattr(job, 'G4TestAlg'):
from G4AtlasTests.G4AtlasTestsConf import G4TestAlg
job += G4TestAlg()
from AthenaCommon.DetFlags import DetFlags
from G4AtlasApps.SimFlags import simFlags
simFlags.ReleaseGeoModel=False;
from AthenaCommon import CfgGetter
if DetFlags.Truth_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("TruthTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("EvgenTruthTestTool", checkType=True)]
if DetFlags.pixel_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("PixelHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("PileupPixelHitsTestTool", checkType=True)]
if DetFlags.SCT_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("SCT_HitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("PileupSCT_HitsTestTool", checkType=True)]
if DetFlags.TRT_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("TrtHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("PileupTrtHitsTestTool", checkType=True)]
if DetFlags.LAr_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("EMBHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("EMECHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("FCALHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("HECHitsTestTool", checkType=True)]
if DetFlags.Truth_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("CaloEntryLayerTestTool", checkType=True)]
if DetFlags.Tile_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("TileHitsTestTool", checkType=True)]
if simFlags.CalibrationRun.get_Value()=='LAr+Tile':
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("LArActiveCaloCalibHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("LArInactiveCaloCalibHitsTestTool", checkType=True)]
##job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("LArDeadMaterialCaloCalibHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("TileActiveCellCaloCalibHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("TileInactiveCellCaloCalibHitsTestTool", checkType=True)]
##job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("TileDeadMaterialCaloCalibHitsTestTool", checkType=True)]
if DetFlags.Muon_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("MDTHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("RPCHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("CSCHitsTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("TGCHitsTestTool", checkType=True)]
if DetFlags.Truth_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("MuonEntryLayerTestTool", checkType=True)]
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("MuonExitLayerTestTool", checkType=True)]
if DetFlags.Lucid_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("LucidHitsTestTool", checkType=True)]
if DetFlags.ALFA_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("ALFA_SimHitsTestTool", checkType=True)]
if DetFlags.ZDC_on():
job.G4TestAlg.SimTestTools += [CfgGetter.getPrivateTool("ZDCHitsTestTool", checkType=True)]
......@@ -39,19 +39,25 @@ StatusCode SiHitsTestTool::initialize()
_TH2D(m_indetLongView,"idet_zr",100,-3200.,3200.,100,0.,1200.);
_SET_TITLE(m_indetLongView, "indet hit distribution","z [mm]","r [mm]");
std::string detName("Pixel");
std::string detName("Pixel"); std::string detpathName("Pixel");
// initialise pixel or SCT variables:
if (m_collection=="PixelHits") {
detName = "Pixel";
detName = "Pixel"; detpathName = "Pixel";
}
else if (m_collection=="PileupPixelHits") {
detName = "PileupPixel"; detpathName = "Pixel";
}
else if (m_collection=="SCT_Hits") {
detName = "SCT";
detName = "SCT"; detpathName = "SCT";
}
else if (m_collection=="PileupSCT_Hits") {
detName = "PileupSCT"; detpathName = "SCT";
}
else {
ATH_MSG_ERROR("SiHitsTestTool for "<<name()<<"not supported !!!\n");
ATH_MSG_ERROR("collection: "<<m_collection<<", SiHitsTestTool for "<<name()<<" not supported !!!\n");
return StatusCode::FAILURE;
}
m_path+=detName+"/";
m_path+=detpathName+"/";
_TH2D(m_hits_xy,(detName+"_xy").c_str(),100,-1200.,1200.,100,-1200.,1200.);
_SET_TITLE(m_hits_xy, "hit distribution","x [mm]","y [mm]");
_TH2D(m_hits_zr,(detName+"_zr").c_str(),100,-3200.,3200.,100,0.,1200.);
......
......@@ -14,14 +14,14 @@
#include <TH1.h>
TileHitsTestTool::TileHitsTestTool(const std::string& type, const std::string& name, const IInterface* parent)
: SimTestToolBase(type, name, parent),
m_tileID(0), m_tileTBID(0), m_tileMgr(0),
m_tile_eta(0), m_tile_phi(0), m_tile_energy(0), m_tile_log_energy(0), m_tile_time(0),
m_tile_rz(0), m_tile_etaphi(0), m_tile_energyphi(0), m_tile_energyeta(0),
m_mbts_side(0), m_mbts_eta(0), m_mbts_phi(0),
m_mbts_sidetaphi(0),
m_etot(0)
{ }
: SimTestToolBase(type, name, parent),
m_tileID(0), m_tileTBID(0), m_tileMgr(0),
m_tile_eta(0), m_tile_phi(0), m_tile_energy(0), m_tile_log_energy(0), m_tile_time(0),
m_tile_rz(0), m_tile_etaphi(0), m_tile_energyphi(0), m_tile_energyeta(0),
m_mbts_side(0), m_mbts_eta(0), m_mbts_phi(0),
m_mbts_sidetaphi(0),
m_etot(0)
{ }
StatusCode TileHitsTestTool::initialize() {
......@@ -39,7 +39,7 @@ StatusCode TileHitsTestTool::initialize() {
_TH1D(m_tile_log_energy,"tile_log_energy",100,-14.,8.);
_SET_TITLE(m_tile_log_energy,"logarithm of energy deposits","log(energy [MeV])","dN/dlog(energy [MeV])");
_TH1D(m_tile_time,"tile_time",100,0,250);
_TH2D(m_tile_rz,"tile_rz",16,-6200.,6200.,25,1500.,4000.);
_TH2D(m_tile_etaphi,"tile_etaphi",65,-1.625,1.625,129,-3.175,3.175);
_TH2D(m_tile_energyphi,"tile_energyphi",100,0.,10.,129,-3.175,3.175);
......@@ -60,7 +60,7 @@ StatusCode TileHitsTestTool::initialize() {
StatusCode TileHitsTestTool::processEvent() {
// make sure we still have a TileMgr (SimFlags.ReleaseGeoModel=False)
CHECK(detStore()->retrieve(m_tileMgr));
const TileHitVector* hitVec;
CHECK(evtStore()->retrieve(hitVec,"TileHitVec"));
......@@ -69,71 +69,75 @@ StatusCode TileHitsTestTool::processEvent() {
Identifier pmt_id = (*i_hit).identify();
Identifier cell_id = m_tileID->cell_id(pmt_id);
const CaloDetDescrElement* ddElement = m_tileMgr->get_cell_element(cell_id);
double eta = ddElement->eta();
double phi = ddElement->phi();
double radius = ddElement->r();
double z = ddElement->z();
int pmt = m_tileID->pmt(pmt_id);
if (pmt>0) phi += ddElement->dphi()/2.; // to see clearly two PMTs in a cell
// loop over subhits
double energy=0;
// ATH_MSG(INFO) << "TileHit size :" <<(*i_hit).size()<<endreq;
for (int i=0; i<(*i_hit).size();++i) {
energy+=(*i_hit).energy(i);
m_tile_energy->Fill((*i_hit).energy(i));
m_tile_log_energy->Fill( log((*i_hit).energy(i)) );
m_tile_time->Fill((*i_hit).time(i));
}
etot+=energy;
m_tile_eta->Fill(eta);
m_tile_phi->Fill(phi);
m_tile_rz->Fill(z,radius);
m_tile_etaphi->Fill(eta,phi);
m_tile_energyphi->Fill(energy,phi);
m_tile_energyeta->Fill(energy,eta);
const CaloDetDescrElement* ddElement = (m_tileID->is_tile_aux(cell_id)) ? 0 : m_tileMgr->get_cell_element(cell_id);
if(ddElement) // skip E4' cells which are not yet described in TileDetDescrManager. ATLASSIM-1835
{
double eta = ddElement->eta();
double phi = ddElement->phi();
double radius = ddElement->r();
double z = ddElement->z();
int pmt = m_tileID->pmt(pmt_id);
if (pmt>0) phi += ddElement->dphi()/2.; // to see clearly two PMTs in a cell
// loop over subhits
double energy=0;
// ATH_MSG(INFO) << "TileHit size :" <<(*i_hit).size()<<endreq;
for (int i=0; i<(*i_hit).size();++i) {
energy+=(*i_hit).energy(i);
m_tile_energy->Fill((*i_hit).energy(i));
m_tile_log_energy->Fill( log((*i_hit).energy(i)) );
m_tile_time->Fill((*i_hit).time(i));
}
etot+=energy;
m_tile_eta->Fill(eta);
m_tile_phi->Fill(phi);
m_tile_rz->Fill(z,radius);
m_tile_etaphi->Fill(eta,phi);
m_tile_energyphi->Fill(energy,phi);
m_tile_energyeta->Fill(energy,eta);
}
}
//Check the Hit container with postfix _Fast which generated with FastCaloSim
const TileHitVector *hitVec_fast;
if( evtStore()->contains<TileHitVector>("TileHitVec_Fast") &&
(evtStore()->retrieve(hitVec_fast,"TileHitVec_Fast")).isSuccess())
{
ATH_MSG_DEBUG ( "Retrieve FastCaloSim container TileHitVec_Fast." );
for(TileHitVecConstIterator i_hit=hitVec_fast->begin();i_hit!=hitVec_fast->end();++i_hit)
(evtStore()->retrieve(hitVec_fast,"TileHitVec_Fast")).isSuccess())
{
Identifier pmt_id=(*i_hit).identify();
Identifier cell_id=m_tileID->cell_id(pmt_id);
const CaloDetDescrElement* ddElement=m_tileMgr->get_cell_element(cell_id);
double eta=ddElement->eta();
double phi=ddElement->phi();
double radius=ddElement->r();
double z=ddElement->z();
int pmt=m_tileID->pmt(pmt_id);
if(pmt>0) phi+=ddElement->dphi()/2.;
double energy=0;
for(int i=0;i<(*i_hit).size();++i)
{
energy+=(*i_hit).energy(i);
m_tile_energy->Fill((*i_hit).energy(i));
m_tile_log_energy->Fill( log((*i_hit).energy(i))) ;
m_tile_time->Fill((*i_hit).time(i));
}
etot+=energy;
m_tile_eta->Fill(eta);
m_tile_phi->Fill(phi);
m_tile_rz->Fill(z,radius);
m_tile_etaphi->Fill(eta,phi);
m_tile_energyphi->Fill(energy,phi);
m_tile_energyeta->Fill(energy,eta);
ATH_MSG_DEBUG ( "Retrieve FastCaloSim container TileHitVec_Fast." );
for(TileHitVecConstIterator i_hit=hitVec_fast->begin();i_hit!=hitVec_fast->end();++i_hit)
{
Identifier pmt_id=i_hit->identify();
Identifier cell_id=m_tileID->cell_id(pmt_id);
const CaloDetDescrElement* ddElement = (m_tileID->is_tile_aux(cell_id)) ? 0 : m_tileMgr->get_cell_element(cell_id);
if(ddElement) // skip E4' cells which are not yet described in TileDetDescrManager. ATLASSIM-1835
{
double eta=ddElement->eta();
double phi=ddElement->phi();
double radius=ddElement->r();
double z=ddElement->z();
int pmt=m_tileID->pmt(pmt_id);
if(pmt>0) phi+=ddElement->dphi()/2.;
double energy=0;
for(int i=0;i<(*i_hit).size();++i)
{
energy+=(*i_hit).energy(i);
m_tile_energy->Fill((*i_hit).energy(i));
m_tile_log_energy->Fill( log((*i_hit).energy(i))) ;
m_tile_time->Fill((*i_hit).time(i));
}
etot+=energy;
m_tile_eta->Fill(eta);
m_tile_phi->Fill(phi);
m_tile_rz->Fill(z,radius);
m_tile_etaphi->Fill(eta,phi);
m_tile_energyphi->Fill(energy,phi);
m_tile_energyeta->Fill(energy,eta);
}
}
}
}
CHECK(evtStore()->retrieve(hitVec,"MBTSHits"));
......
......@@ -12,13 +12,16 @@
TrtHitsTestTool::TrtHitsTestTool(const std::string& type, const std::string& name, const IInterface* parent)
: SimTestToolBase(type, name, parent),
m_collection("TRTUncompressedHits"),
m_indetBarrel(0), m_indetLongView(0),
m_hits_time_photons(0), m_hits_edep_photons(0),
m_hits_time_nonphotons(0), m_hits_edep_nonphotons(0),
m_hits_xy(0), m_hits_zr(0),
m_hits_edep_zr_photons(0), m_hits_edep_zr_nonphotons(0),
m_hits_log_barcode(0)
{ }
{
declareProperty("CollectionName", m_collection="TRTUncompressedHits");
}
StatusCode TrtHitsTestTool::initialize()
{
......@@ -29,7 +32,10 @@ StatusCode TrtHitsTestTool::initialize()
_TH2D(m_indetLongView,"idet_zr",100,-3200.,3200.,100,0.,1200.);
_SET_TITLE(m_indetLongView, "indet hit distribution [All]","z [mm]","r [mm]");
m_path+="TRT/";
if (m_collection=="TRTUncompressedHits") m_path+="TRT/";
else if (m_collection=="PileupTRTUncompressedHits") m_path+="PileupTRT/";
else { std::cerr<<"unsupported CollectionName for "<< this->name()<<std::endl; }
_TH2D(m_hits_xy,"trt_xy",100,-1200.,1200.,100,-1200.,1200.);
_SET_TITLE(m_hits_xy, "hit distribution [All]","x [mm]","y [mm]");
_TH2D(m_hits_zr,"trt_zr",100,-3200.,3200.,100,0.,1200.);
......@@ -57,7 +63,7 @@ StatusCode TrtHitsTestTool::initialize()
StatusCode TrtHitsTestTool::processEvent() {
const DataHandle<TRTUncompressedHitCollection> p_collection;
if (evtStore()->retrieve(p_collection,"TRTUncompressedHits").isSuccess()) {
if (evtStore()->retrieve(p_collection,m_collection).isSuccess()) {
for (TRTUncompressedHitConstIter i_hit=p_collection->begin() ; i_hit!=p_collection->end() ; ++i_hit) {
GeoTRTUncompressedHit ghit(*i_hit);
HepGeom::Point3D<double> u = ghit.getGlobalPosition();
......
......@@ -19,6 +19,7 @@ public:
StatusCode processEvent();
private:
std::string m_collection;
// general inner detector
TH2 *m_indetBarrel, *m_indetLongView;
// specialised (TRT)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment