CMS 3D CMS Logo

SiPixelTrackerMap Class Reference

#include <DQM/SiPixelMonitorClient/interface/SiPixelTrackerMap.h>

Inheritance diagram for SiPixelTrackerMap:

TrackerMap

List of all members.

Public Member Functions

void drawModule (TmModule *mod, int key, int nlay, bool print_total)
void print (bool print_total=true, std::string TKType="Averages", float minval=0., float maxval=0.)
 SiPixelTrackerMap (std::string s=" ", int xsize1=340, int ysize1=200)
 ~SiPixelTrackerMap (void)

Private Attributes

int dummy
std::string title


Detailed Description

Definition at line 24 of file SiPixelTrackerMap.h.


Constructor & Destructor Documentation

SiPixelTrackerMap::SiPixelTrackerMap ( std::string  s = " ",
int  xsize1 = 340,
int  ysize1 = 200 
)

SiPixelTrackerMap::~SiPixelTrackerMap ( void   )  [inline]

Definition at line 31 of file SiPixelTrackerMap.h.

00031 {;} 


Member Function Documentation

void SiPixelTrackerMap::drawModule ( TmModule mod,
int  key,
int  nlay,
bool  print_total 
)

Definition at line 43 of file SiPixelTrackerMap.cc.

References funct::cos(), lat::endl(), false, TmModule::idex, TmModule::idModule, TrackerMap::isRingStereo(), j, k, TmModule::length, TmModule::name, np, phi, TrackerMap::phival(), TrackerMap::posrel, TmModule::posx, TmModule::posy, TmModule::posz, pv1, r, TmModule::ring, funct::sin(), funct::sqrt(), TrackerMap::svgfile, TmModule::text, TmModule::width, TmModule::widthAtHalfLength, TrackerMap::xdpixel(), and TrackerMap::ydpixel().

00044 {
00045   //int x,y;
00046   double phi,r,dx,dy, dy1;
00047   double xp[4],yp[4],xp1,yp1;
00048   double vhbot,vhtop,vhapo;
00049   double rmedio[]={0.041,0.0701,0.0988,0.255,0.340,0.430,0.520,0.610,0.696,0.782,0.868,0.965,1.080};
00050   double xt1,yt1,xs1=0.,ys1=0.,xt2,yt2,xs2,ys2,pv1,pv2;
00051 //  int green = 0;
00052   double xd[4],yd[4];
00053   int np = 4;
00054   //int numrec=0;
00055   int numod=0;
00056   phi = phival(mod->posx,mod->posy);
00057   r = sqrt(mod->posx*mod->posx+mod->posy*mod->posy);
00058   vhbot = mod->width;
00059   vhtop=mod->width;
00060   vhapo=mod->length;
00061   if(nlay < 31){ //endcap
00062     vhbot = mod->widthAtHalfLength/2.-(mod->width/2.-mod->widthAtHalfLength/2.); 
00063     vhtop=mod->width/2.;
00064     vhapo=mod->length/2.;
00065     if(nlay >12 && nlay <19){
00066       if(posrel)r = r+r;
00067       xp[0]=r-vhtop;yp[0]=-vhapo;
00068       xp[1]=r+vhtop;yp[1]=-vhapo;
00069       xp[2]=r+vhtop;yp[2]=vhapo;
00070       xp[3]=r-vhtop;yp[3]=vhapo;
00071     }else{
00072       if(posrel)r = r + r/3.;
00073       xp[0]=r-vhapo;yp[0]=-vhbot;
00074       xp[1]=r+vhapo;yp[1]=-vhtop;
00075       xp[2]=r+vhapo;yp[2]=vhtop;
00076       xp[3]=r-vhapo;yp[3]=vhbot;
00077     }
00078     for(int j=0;j<4;j++){
00079       xp1 = xp[j]*cos(phi)-yp[j]*sin(phi);
00080       yp1 = xp[j]*sin(phi)+yp[j]*cos(phi);
00081       xp[j] = xp1;yp[j]=yp1;
00082     }
00083   } else { //barrel
00084     numod=mod->idModule;if(numod>100)numod=numod-100;
00085     int vane = mod->ring;
00086     if(posrel){
00087       dx = vhapo;
00088       phi=M_PI;
00089       xt1=rmedio[nlay-31]; yt1=-vhtop/2.;
00090       xs1 = xt1*cos(phi)-yt1*sin(phi);
00091       ys1 = xt1*sin(phi)+yt1*cos(phi);
00092       xt2=rmedio[nlay-31]; yt2=vhtop/2.;
00093       xs2 = xt2*cos(phi)-yt2*sin(phi);
00094       ys2 = xt2*sin(phi)+yt2*cos(phi);
00095       dy=phival(xs2,ys2)-phival(xs1,ys1);
00096          dy1 = dy;
00097       if(nlay==31)dy1=0.39;
00098       if(nlay==32)dy1=0.23;
00099       if(nlay==33)dy1=0.16;
00100       xp[0]=vane*(dx+dx/8.);yp[0]=numod*(dy1);
00101       xp[1]=vane*(dx+dx/8.)+dx;yp[1]=numod*(dy1);
00102       xp[2]=vane*(dx+dx/8.)+dx;yp[2]=numod*(dy1)+dy;
00103       xp[3]=vane*(dx+dx/8.);yp[3]=numod*(dy1)+dy;
00104     }else{
00105       xt1=r; yt1=-vhtop/2.;
00106       xs1 = xt1*cos(phi)-yt1*sin(phi);
00107       ys1 = xt1*sin(phi)+yt1*cos(phi);
00108       xt2=r; yt2=vhtop/2.;
00109       xs2 = xt2*cos(phi)-yt2*sin(phi);
00110       ys2 = xt2*sin(phi)+yt2*cos(phi);
00111       pv1=phival(xs1,ys1);
00112       pv2=phival(xs2,ys2);
00113       if(fabs(pv1-pv2)>M_PI && numod==1)pv1=pv1-2.*M_PI;
00114       if(fabs(pv1-pv2)>M_PI && numod!=1)pv2=pv2+2.*M_PI;
00115       xp[0]=mod->posz-vhapo/2.;yp[0]=4.2*pv1;
00116       xp[1]=mod->posz+vhapo/2.;yp[1]=4.2*pv1;
00117       xp[2]=mod->posz+vhapo/2. ;yp[2]=4.2*pv2;
00118           xp[3]=mod->posz-vhapo/2.;yp[3]=4.2*pv2;
00119     }
00120   }
00121   if(isRingStereo(key))
00122         {
00123           np = 3;
00124           if(mod->idModule>100 ){for(int j=0;j<3;j++){
00125               xd[j]=xdpixel(xp[j]);yd[j]=ydpixel(yp[j]);
00126             }
00127           }else {
00128             xd[0]=xdpixel(xp[2]);yd[0]=ydpixel(yp[2]);
00129             xd[1]=xdpixel(xp[3]);yd[1]=ydpixel(yp[3]);
00130             xd[2]=xdpixel(xp[0]);yd[2]=ydpixel(yp[0]);
00131           }
00132         } else {
00133     for(int j=0;j<4;j++){
00134       xd[j]=xdpixel(xp[j]);yd[j]=ydpixel(yp[j]);
00135     }
00136   }
00137   char buffer [20];
00138   sprintf(buffer,"%X",mod->idex);
00139 
00140   bool FPIX_M_1 = false ;
00141   bool FPIX_M_2 = false ;
00142   bool FPIX_P_1 = false ;
00143   bool FPIX_P_2 = false ;
00144   bool BPIX_L_1 = false ;
00145   bool BPIX_L_2 = false ;
00146   bool BPIX_L_3 = false ;
00147   QRegExp rx("(BPIX|FPIX)") ;
00148   QRegExp
00149  
00150 ry("(FPIX\\s+-z\\s+disc\\s+1|FPIX\\s+-z\\s+disc\\s+2|FPIX\\s+\\+z\\s+disc\\s+2|FPIX\\s+\\+z\\s+disc\\s+1|Shell_mI/Layer_1|Shell_mO/Layer_1|Shell_pI/Layer_1|Shell_pO/Layer_1)") ;
00151   QString modName = mod->name ;
00152   if( rx.search(modName) != -1 )
00153   {
00154    if( ry.search(modName) != -1 )
00155    {
00156     FPIX_M_1 = false ;
00157     FPIX_M_2 = false ;
00158     FPIX_P_1 = false ;
00159     FPIX_P_2 = false ;
00160     BPIX_L_1 = false ;
00161     BPIX_L_2 = false ;
00162     BPIX_L_3 = false ;
00163     if( ry.cap(1) == "FPIX -z disc 1" ) {FPIX_M_1 = true;}
00164     if( ry.cap(1) == "FPIX -z disc 2" ) {FPIX_M_2 = true;}
00165     if( ry.cap(1) == "FPIX +z disc 1" ) {FPIX_P_1 = true;}
00166     if( ry.cap(1) == "FPIX +z disc 2" ) {FPIX_P_2 = true;}
00167     if( ry.cap(1) == "Shell_mI/Layer_1") {BPIX_L_1 = true;}
00168     if( ry.cap(1) == "Shell_mO/Layer_1") {BPIX_L_1 = true;}
00169     if( ry.cap(1) == "Shell_pI/Layer_1") {BPIX_L_1 = true;}
00170     if( ry.cap(1) == "Shell_pO/Layer_1") {BPIX_L_1 = true;}
00171     if( ry.cap(1) == "layer 2"        ) {BPIX_L_2 = true;}
00172     if( ry.cap(1) == "layer 3"        ) {BPIX_L_3 = true;}
00173    }
00174    *svgfile << "      <svg:polygon detid=\"" 
00175             << mod->idex
00176             << "\" id=\""
00177             << mod->idex
00178             << "\" onclick=\"SvgMap.showData(evt);\" onmouseover=\"SvgMap.showData(evt);\" onmouseout=\"SvgMap.showData(evt);\" entries=\""
00179             << mod->text
00180             << "\" POS=\""
00181             << mod->name
00182             << " Id "
00183             << mod->idex
00184             << " \" fill=\"rgb("
00185             << 146
00186             << ","
00187             << 0
00188             << ","
00189             << 255
00190             << ")\" points=\"";
00191    for(int k=0;k<np;k++)
00192    {
00193     if( FPIX_M_1 )
00194     {
00195      xd[k] = xd[k] * 1.8 -   60 ;
00196      yd[k] = yd[k] * 2.0 -   30 ;
00197     }
00198     if( FPIX_M_2 )
00199     {
00200      xd[k] = xd[k] * 1.8 -   60 ;
00201      yd[k] = yd[k] * 2.0 -   60 ;
00202     }
00203     if( FPIX_P_1 )
00204     {
00205      xd[k] = xd[k] * 1.8 - 1020 ;
00206      yd[k] = yd[k] * 2.0 -   30 ;
00207     }
00208     if( FPIX_P_2 )
00209     {
00210      xd[k] = xd[k] * 1.8 - 1020 ;
00211      yd[k] = yd[k] * 2.0 -   60 ;
00212     }
00213     if( BPIX_L_1 ) 
00214     { 
00215      xd[k] = xd[k] * 1.2 -  130 ;
00216     }
00217     if( BPIX_L_2 )
00218     {
00219      xd[k] = xd[k] * 1.2 -   30 ;
00220     }
00221     if( BPIX_L_3 )
00222     {
00223      xd[k] = xd[k] * 1.2 -  240 ;
00224      yd[k] = yd[k]       -    5 ;
00225     }
00226     *svgfile << xd[k] << "," << yd[k] << " " ;
00227    }
00228    *svgfile <<"\" />" <<endl;
00229    return ;
00230   }
00231 
00232 }

void SiPixelTrackerMap::print ( bool  print_total = true,
std::string  TKType = "Averages",
float  minval = 0.,
float  maxval = 0. 
)

Referenced by SiPixelTrackerMapCreator::create().


Member Data Documentation

int SiPixelTrackerMap::dummy [private]

Definition at line 44 of file SiPixelTrackerMap.h.

std::string SiPixelTrackerMap::title [private]

Reimplemented from TrackerMap.

Definition at line 45 of file SiPixelTrackerMap.h.


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:32:08 2009 for CMSSW by  doxygen 1.5.4