#include #include #include #include "IGeomVisitor.hxx" #include "IGeomInfo.hxx" #include "ICDCGeom.hxx" class IGeomTestCDC: public COMET::ICOMETEventLoopFunction { public: IGeomTestCDC() :fCDCGeom(NULL) { } virtual ~IGeomTestCDC() {} bool operator () (COMET::ICOMETEvent& event) { COMET::IOADatabase::Get().UpdateGeometry(); COMET::IGeomInfo::Get(); if (!fCDCGeom) { fCDCGeom = new COMET::ICDCGeom(); fCDCGeom->Fill(); } fCDCGeom->ls(""); COMETLog("GetNumberOfLayers() = " << fCDCGeom->GetNumberOfLayers()); COMETLog("GetNumberOfWires() = " << fCDCGeom->GetNumberOfWires()); for (int i = 0; i < fCDCGeom->GetNumberOfLayers(); i++) { COMETLog(" number of sense wires @ layer " << i << " = " << fCDCGeom->GetNumberOfWiresPerLayer(i)); std::vector list(0); COMETLog(" GetWiresInLayer..."); if (!fCDCGeom->GetWiresInLayer(i, list)) continue; COMETLog(" Cell 1 wire index = " << list.at(1) << " @ layer " << i); TVector3 position; // cell 1 position double length; // cell 1 length COMETLog(" GetWirePosition..."); position = fCDCGeom->GetWirePosition(list.at(1)); length = fCDCGeom->GetWireLength(list.at(1)); COMETLog(" cell 1 wire position = (" << position.x() << "," << position.y() << "," << position.z() << ")"); COMETLog(" cell 1 wire length = " << length); } return true; } COMET::ICDCGeom *fCDCGeom; }; int main(int argc, char **argv) { IGeomTestCDC userCode; cometEventLoop(argc,argv,userCode,1); }