Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

CalRecLogs.cpp

Go to the documentation of this file.
00001 
00002 #include "CalRecon/CalRecLogs.h"
00003 #define LOGWIDTH 3.05
00004 
00005 //----------------- CalRecLog ------------------
00006 //################################################
00007 CalRecLog::CalRecLog(int ilayer, CalDetGeo::axis v, int icolumn,idents::ModuleId mod) : 
00008 CalADCLog(ilayer,v,icolumn,mod)
00009 //################################################
00010 {
00011         clear();
00012 }
00013 
00014 //################################################
00015 CalRecLog::CalRecLog(int ilayer, CalDetGeo::axis v, int icolumn) : 
00016 CalADCLog(ilayer,v,icolumn)
00017 //################################################
00018 {
00019         clear();
00020 }
00021 //################################################
00022 double CalRecLog::asymmetry() const
00023 //################################################
00024 {
00025         double asymmetry = 0.;
00026         if (m_pEnergy > 0 && m_nEnergy > 0)
00027                 asymmetry = (m_pEnergy-m_nEnergy)/(m_pEnergy+m_nEnergy);
00028         return asymmetry;
00029 }
00030 //################################################
00031 void CalRecLog::writeOut() const
00032 //################################################
00033 {
00034         if(energy()>0){
00035                 std::cout << " ID " << logID() <<  " - "<< modId()<<" " << layer()<<" "<< view()
00036                                   <<" " << column() << " ";
00037                 std::cout << " E-+ " << energy() << " " << negEnergy() << " " << posEnergy() ;
00038                 std::cout << " Asy " << asymmetry();
00039                 std::cout << " Pos " << position().x() << " " << position().y() << " " << position().z();
00040                 std::cout << "\n";
00041         }
00042 }
00043 //######################################################
00044 void CalRecLog::draw(gui::DisplayRep& v) const
00045 //######################################################
00046 {
00047         double MINENE = 10.;
00048         double FACTOR = 0.1;
00049 //      double delta = 0.2*calorimeterGeo::logWidth();
00050         double delta = 0.2*LOGWIDTH;
00051         double x = position().x();
00052         double y = position().y();
00053         double z = position().z();
00054         double ene = energy();
00055         if (ene <= MINENE) return;
00056 
00057         v.setColor("black");
00058         v.moveTo(Point(x-delta,y,z));
00059         v.lineTo(Point(x+delta,y,z));
00060         v.moveTo(Point(x,y-delta,z));
00061         v.lineTo(Point(x,y+delta,z));
00062 
00063         v.moveTo(Point(x,y,z));
00064         v.lineTo(Point(x,y,z-log(FACTOR*ene)));
00065 }
00066 //------------- private --------------------------
00067 //################################################
00068 void CalRecLog::clear()
00069 //################################################
00070 {
00071         CalADCLog::clear();
00072 
00073         for (int irange = 0; irange < CALNRANGES; irange++) {
00074                 m_negEnergy[irange] = 0;
00075                 m_posEnergy[irange] = 0;
00076         }
00077 
00078         m_nEnergy = 0.;
00079         m_pEnergy = 0.;
00080         m_position = Point(0.,0.,0.);
00081 }
00082 
00083 //------------ private ---------------------------
00084 //######################################
00085 void CalRecLogs::ini(int nModX, int nModY, int nLogs, int nLayers, int nViews)
00086 //######################################
00087 {
00088         for (int iy = 1; iy <= nModY; iy++){            
00089                 for (int ix = 1; ix <= nModX; ix++){
00090                         idents::ModuleId mod(ix,iy);
00091                         
00092                         for (int ilayer = 0; ilayer < nLayers; ilayer++) {
00093                                 for (int v=0; v < nViews; v++){
00094                                         CalDetGeo::axis view = CalDetGeo::makeAxis(v);
00095                                         for (int ilog = 0; ilog < nLogs; ilog++) {
00096                                                 m_List.push_back(new CalRecLog(ilayer,view,ilog,mod));
00097                                         }
00098                                 }
00099                         }
00100                 }
00101         }
00102 }
00103 //######################################
00104 CalRecLogs::~CalRecLogs()
00105 //######################################
00106 {
00107     if(m_calDisp) m_calDisp->clearLogsDisp();
00108         for (int ilog = 0; ilog < m_List.size(); ilog++) delete m_List[ilog];
00109 }
00110 //######################################
00111 void CalRecLogs::clear()
00112 //######################################
00113 {
00114         for (int ilog = 0; ilog < m_List.size(); ilog++) {
00115                 m_List[ilog]->clear();
00116         }
00117 }
00118 //######################################
00119 CalRecLog* CalRecLogs::getLogID(int logID) const
00120 //######################################
00121 {
00122         int jlog = -1;
00123         for (int ilog = 0; ilog < m_List.size(); ilog++) {
00124                 if (m_List[ilog]->logID() == logID) {
00125                         jlog  = ilog;
00126                         break;
00127                 }
00128         }
00129         return m_List[jlog];
00130 }
00131 
00132 //######################################
00133 void CalRecLogs::writeOut() const
00134 //######################################
00135 {
00136         if (m_List.size()<=0) return;
00137 
00138         std::cout << " CalRecLogs " << m_List.size() <<"\n";
00139         for (int i = 0; i < m_List.size();i++) {
00140                 m_List[i]->writeOut();
00141         }
00142 }
00143 //######################################
00144 void CalRecLogs::draw(gui::DisplayRep& v) const
00145 //######################################
00146 {
00147         if (m_List.size() <=0) return;
00148         for (int i = 0; i < m_List.size();i++) m_List[i]->draw(v);
00149 }

Generated on Thu Nov 29 16:38:48 2001 by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001