CMS 3D CMS Logo

SiStripMonitorTrack Class Reference

#include <DQM/SiStripMonitorTrack/interface/SiStripMonitorTrack.h>

Inheritance diagram for SiStripMonitorTrack:

edm::EDAnalyzer

List of all members.

Public Types

typedef
TransientTrackingRecHit::ConstRecHitPointer 
ConstRecHitPointer
enum  RecHitType { Single = 0, Matched = 1, Projected = 2, Null = 3 }

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginRun (const edm::Run &run, const edm::EventSetup &c)
virtual void endJob (void)
 SiStripMonitorTrack (const edm::ParameterSet &)
 ~SiStripMonitorTrack ()

Private Member Functions

void AllClusters (const edm::EventSetup &es)
void book ()
MonitorElementbookME1D (const char *, const char *)
MonitorElementbookME2D (const char *, const char *)
MonitorElementbookME3D (const char *, const char *)
MonitorElementbookMEProfile (const char *, const char *)
MonitorElementbookMETrend (const char *, const char *)
void bookModMEs (TString, uint32_t)
void bookSubDetMEs (TString name, TString flag)
void bookTrendMEs (TString, int32_t, uint32_t, std::string flag)
bool clusterInfos (SiStripClusterInfo *cluster, const uint32_t &detid, std::string flag, LocalVector LV)
void fillCapacitiveCouplingMEs (SiStripClusterInfo *, std::string, float, std::string)
void fillME (MonitorElement *ME, float value1, float value2, float value3, float value4)
void fillME (MonitorElement *ME, float value1, float value2, float value3)
void fillME (MonitorElement *ME, float value1, float value2)
void fillME (MonitorElement *ME, float value1)
void fillModMEs (SiStripClusterInfo *, TString, float)
void fillTrend (MonitorElement *ME, float value1)
void fillTrendMEs (SiStripClusterInfo *, std::string, float, std::string)
void RecHitInfo (const SiStripRecHit2D *tkrecHit, LocalVector LV, reco::TrackRef track_ref, const edm::EventSetup &)
float SymEta (float clusterCentralCharge, float clusterLeftCharge, float clusterRightCharge)
void trackStudy (const edm::EventSetup &es)

Private Attributes

bool CCAnalysis_On_
edm::InputTag Cluster_src_
edm::ParameterSet conf_
int countAll
int countOff
int countOn
DQMStoredbe
std::map< std::pair
< std::string, int32_t >, bool
DetectedLayers
edm::Handle
< edmNew::DetSetVector
< SiStripCluster > > 
dsv_SiStripCluster
edm::Handle< edm::DetSetVector
< SiStripRawDigi > > 
dsv_SiStripRawDigi
int eventNb
int firstEvent
bool flag_ring
SiStripFolderOrganizer folder_organizer
std::string histname
std::map< TString, LayerMEsLayerMEsMap
LocalVector LV
std::map< TString,
MonitorElement * > 
MEMap
bool Mod_On_
std::map< TString, ModMEsModMEsMap
std::vector< uint32_t > ModulesToBeExcluded_
TString name
int NClus [4][3]
int off_Flag
bool OffHisto_On_
edm::ParameterSet Parameters
bool RawDigis_On_
bool ring_flag
int runNb
edm::ESHandle< SiStripDetCablingSiStripDetCabling_
edm::Handle
< TrajTrackAssociationCollection
TItkAssociatorCollection
edm::ESHandle< TrackerGeometrytkgeom
bool trackAssociatorCollection_in_EventTree
edm::Handle
< reco::TrackCollection
trackCollection
bool tracksCollection_in_EventTree
edm::Handle< std::vector
< Trajectory > > 
TrajectoryCollection
bool Trend_On_
std::vector< const
SiStripCluster * > 
vPSiStripCluster

Classes

struct  LayerMEs
struct  ModMEs


Detailed Description

Definition at line 50 of file SiStripMonitorTrack.h.


Member Typedef Documentation

typedef TransientTrackingRecHit::ConstRecHitPointer SiStripMonitorTrack::ConstRecHitPointer

Definition at line 52 of file SiStripMonitorTrack.h.


Member Enumeration Documentation

enum SiStripMonitorTrack::RecHitType

Enumerator:
Single 
Matched 
Projected 
Null 

Definition at line 53 of file SiStripMonitorTrack.h.

00053 { Single=0, Matched=1, Projected=2, Null=3};


Constructor & Destructor Documentation

SiStripMonitorTrack::SiStripMonitorTrack ( const edm::ParameterSet conf  )  [explicit]

Definition at line 27 of file SiStripMonitorTrack.cc.

References i, j, NClus, off_Flag, and OffHisto_On_.

00027                                                                    :
00028   dbe(edm::Service<DQMStore>().operator->()),
00029   conf_(conf),
00030   Cluster_src_( conf.getParameter<edm::InputTag>( "Cluster_src" ) ),
00031   Mod_On_(conf.getParameter<bool>("Mod_On")),
00032   Trend_On_(conf.getParameter<bool>("Trend_On")),
00033   OffHisto_On_(conf.getParameter<bool>("OffHisto_On")),
00034   RawDigis_On_(conf.getParameter<bool>("RawDigis_On")),
00035   CCAnalysis_On_(conf.getParameter<bool>("CCAnalysis_On")),
00036   folder_organizer(), tracksCollection_in_EventTree(true),
00037   flag_ring(conf.getParameter<bool>("RingFlag_On")),
00038   firstEvent(-1)
00039 {
00040   for(int i=0;i<4;++i) for(int j=0;j<2;++j) NClus[i][j]=0;
00041   if(OffHisto_On_){
00042     off_Flag = 2;
00043   }else{
00044     off_Flag = 1;
00045   }
00046 }

SiStripMonitorTrack::~SiStripMonitorTrack (  ) 

Definition at line 49 of file SiStripMonitorTrack.cc.

00049 { }


Member Function Documentation

void SiStripMonitorTrack::AllClusters ( const edm::EventSetup es  )  [private]

Definition at line 730 of file SiStripMonitorTrack.cc.

References clusterInfos(), countOff, dsv_SiStripCluster, edmNew::DetSet< T >::end(), find(), LogDebug, LV, ModulesToBeExcluded_, and vPSiStripCluster.

Referenced by analyze().

00731 {
00732 
00733   //Loop on Dets
00734   for ( edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter=dsv_SiStripCluster->begin(); DSViter!=dsv_SiStripCluster->end();DSViter++){
00735     uint32_t detid=DSViter->id();
00736     if (find(ModulesToBeExcluded_.begin(),ModulesToBeExcluded_.end(),detid)!=ModulesToBeExcluded_.end()) continue;
00737     //Loop on Clusters
00738     edm::LogInfo("SiStripMonitorTrack") << "on detid "<< detid << " N Cluster= " << DSViter->size();
00739     edmNew::DetSet<SiStripCluster>::const_iterator ClusIter = DSViter->begin();
00740     for(; ClusIter!=DSViter->end(); ClusIter++) {
00741       SiStripClusterInfo* SiStripClusterInfo_= new SiStripClusterInfo(detid,*ClusIter,es);
00742         LogDebug("SiStripMonitorTrack") << "ClusIter " << &*ClusIter << "\t " 
00743                                         << std::find(vPSiStripCluster.begin(),vPSiStripCluster.end(),&*ClusIter)-vPSiStripCluster.begin();
00744         if (std::find(vPSiStripCluster.begin(),vPSiStripCluster.end(),&*ClusIter) == vPSiStripCluster.end()){
00745           if ( clusterInfos(SiStripClusterInfo_,detid,"OffTrack",LV) ) {
00746             countOff++;
00747           }
00748         }
00749         delete SiStripClusterInfo_; 
00750     }
00751   }
00752 }

void SiStripMonitorTrack::analyze ( const edm::Event e,
const edm::EventSetup es 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 74 of file SiStripMonitorTrack.cc.

References AllClusters(), Cluster_src_, conf_, countOff, countOn, reco_application_tbsim_simpleTBanalysis_cfg::digiProducer, dsv_SiStripCluster, dsv_SiStripRawDigi, lat::endl(), eventNb, edm::Handle< T >::failedToGet(), fillME(), fillTrend(), flags, edm::Event::getByLabel(), edm::ParameterSet::getParameter(), i, edm::Event::id(), edm::Handle< T >::isValid(), j, LayerMEsMap, LogDebug, MEMap, name, NClus, off_Flag, OffHisto_On_, RawDigis_On_, runNb, SubDet, TItkAssociatorCollection, trackAssociatorCollection_in_EventTree, trackCollection, tracksCollection_in_EventTree, trackStudy(), TrajectoryCollection, Trend_On_, and vPSiStripCluster.

00075 {
00076   
00077   tracksCollection_in_EventTree=true;
00078   trackAssociatorCollection_in_EventTree=true;
00079   
00080   //initialization of global quantities
00081   edm::LogInfo("SiStripMonitorTrack") << "[SiStripMonitorTrack::analyse]  " << "Run " << e.id().run() << " Event " << e.id().event() << std::endl;
00082   runNb   = e.id().run();
00083   eventNb = e.id().event();
00084   vPSiStripCluster.clear();
00085   countOn=0;
00086   countOff=0;
00087   
00088   e.getByLabel( Cluster_src_, dsv_SiStripCluster); 
00089   
00090   // track input  
00091   std::string TrackProducer = conf_.getParameter<std::string>("TrackProducer");
00092   std::string TrackLabel = conf_.getParameter<std::string>("TrackLabel");
00093   
00094   e.getByLabel(TrackProducer, TrackLabel, trackCollection);//takes the track collection
00095  
00096   if (trackCollection.isValid()){
00097   }else{
00098     edm::LogError("SiStripMonitorTrack")<<" Track Collection is not valid !! " << TrackLabel<<std::endl;
00099     tracksCollection_in_EventTree=false;
00100   }
00101   
00102   // get RawDigi collection
00103   if(RawDigis_On_) {
00104     std::string digiProducer = conf_.getParameter<std::string>("RawDigiProducer");
00105     std::string    digiLabel = conf_.getParameter<std::string>("RawDigiLabel");
00106     e.getByLabel(digiProducer,digiLabel,dsv_SiStripRawDigi);
00107     if( ! dsv_SiStripRawDigi.failedToGet() ){
00108       // digi check
00109       edm::LogInfo("SiStripMonitorTrack") << "[SiStripMonitorTrack::analyse]  " << "Digi " << digiLabel
00110                                           << " found " << dsv_SiStripRawDigi->size() << "\n";
00111       /* digi check
00112          for( edm::DetSetVector<SiStripRawDigi>::const_iterator iDigi = dsv_SiStripRawDigi->begin();
00113          iDigi != dsv_SiStripRawDigi->end(); ++iDigi)
00114          edm::LogInfo("SiStripMonitorTrack") << "\n\t Digi in detid " << iDigi->detId() << ": " << iDigi->size();
00115       */
00116     }else{
00117       LogDebug("SiStripMonitorTrack") << "RawDigis not found " << std::endl;
00118     }
00119   } else {
00120     LogDebug("SiStripMonitorTrack") << "RawDigis Off " << std::endl;
00121   }
00122   
00123   // trajectory input
00124   e.getByLabel(TrackProducer, TrackLabel, TrajectoryCollection);
00125   e.getByLabel(TrackProducer, TrackLabel, TItkAssociatorCollection);
00126   if( TItkAssociatorCollection.isValid()){
00127   }else{
00128     edm::LogError("SiStripMonitorTrack")<<"Association not found "<<std::endl;
00129     trackAssociatorCollection_in_EventTree=false;
00130   }
00131   
00132   //Perform track study
00133   if (tracksCollection_in_EventTree && trackAssociatorCollection_in_EventTree) trackStudy(es);
00134   
00135   //Perform Cluster Study (irrespectively to tracks)
00136 
00137   if(OffHisto_On_){
00138     if (dsv_SiStripCluster.isValid()){
00139       AllClusters(es);//analyzes the off Track Clusters
00140     }else{
00141       edm::LogError("SiStripMonitorTrack")<< "ClusterCollection is not valid!!" << std::endl;
00142     }
00143   }
00144 
00145   //Summary Counts of clusters
00146   std::map<TString, MonitorElement*>::iterator iME;
00147   std::map<TString, ModMEs>::iterator          iModME ;
00148   std::map<TString, LayerMEs>::iterator        iLayerME;
00149   
00150   for (int j=0;j<off_Flag;++j){ // loop over ontrack, offtrack
00151     int nTot=0;
00152     for (int i=0;i<4;++i){ // loop over TIB, TID, TOB, TEC
00153       name=flags[j]+"_in_"+SubDet[i];      
00154       iLayerME = LayerMEsMap.find(name);
00155       if(iLayerME!=LayerMEsMap.end()) {
00156         if(flags[j]=="OnTrack" && NClus[i][j]){
00157           fillME(   iLayerME->second.nClusters,      NClus[i][j]);
00158         }else if(flags[j]=="OffTrack"){
00159           fillME(   iLayerME->second.nClusters,      NClus[i][j]);
00160         }
00161         if(Trend_On_)
00162           fillTrend(iLayerME->second.nClustersTrend, NClus[i][j]);
00163       }
00164       nTot+=NClus[i][j];
00165       NClus[i][j]=0;
00166     } // loop over TIB, TID, TOB, TEC
00167     
00168     name=flags[j]+"_TotalNumberOfClusters";
00169     iME = MEMap.find(name);
00170     if(iME!=MEMap.end() && nTot) iME->second->Fill(nTot);
00171     if(Trend_On_){
00172       iME = MEMap.find(name+"Trend");
00173       if(iME!=MEMap.end()) fillTrend(iME->second,nTot);
00174     }
00175   } // loop over ontrack, offtrack
00176   
00177 }

void SiStripMonitorTrack::beginRun ( const edm::Run run,
const edm::EventSetup c 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 54 of file SiStripMonitorTrack.cc.

References book(), lat::endl(), edm::EventSetup::get(), SiStripDetCabling_, and tkgeom.

00055 {
00056   //get geom 
00057   es.get<TrackerDigiGeometryRecord>().get( tkgeom );
00058   edm::LogInfo("SiStripMonitorTrack") << "[SiStripMonitorTrack::beginRun] There are "<<tkgeom->detUnits().size() <<" detectors instantiated in the geometry" << std::endl;  
00059   es.get<SiStripDetCablingRcd>().get( SiStripDetCabling_ );
00060 
00061   book();
00062 }

void SiStripMonitorTrack::book (  )  [private]

Definition at line 180 of file SiStripMonitorTrack.cc.

References bookME1D(), bookMETrend(), bookModMEs(), bookSubDetMEs(), bookTrendMEs(), DQMStore::cd(), conf_, dbe, DetectedLayers, lat::endl(), flag_ring, flags, folder_organizer, edm::ParameterSet::getParameter(), SiStripFolderOrganizer::GetSubDetAndLayer(), iter, j, python::multivaluedict::map(), MEMap, Mod_On_, name, off_Flag, edm::second(), DQMStore::setCurrentFolder(), SiStripFolderOrganizer::setDetectorFolder(), SiStripFolderOrganizer::setLayerFolder(), SiStripDetCabling_, and Trend_On_.

Referenced by beginRun().

00181 {
00182   
00183   std::vector<uint32_t> vdetId_;
00184   SiStripDetCabling_->addActiveDetectorsRawIds(vdetId_);
00185   //Histos for each detector, layer and module
00186   for (std::vector<uint32_t>::const_iterator detid_iter=vdetId_.begin();detid_iter!=vdetId_.end();detid_iter++){  //loop on all the active detid
00187     uint32_t detid = *detid_iter;
00188     
00189     if (detid < 1){
00190       edm::LogError("SiStripMonitorTrack")<< "[" <<__PRETTY_FUNCTION__ << "] invalid detid " << detid<< std::endl;
00191       continue;
00192     }
00193 
00194     // set the DQM directory
00195     std::string MEFolderName = conf_.getParameter<std::string>("FolderName");    
00196     dbe->setCurrentFolder(MEFolderName);
00197     
00198     for (int j=0;j<off_Flag;j++) { // Loop on onTrack, offTrack
00199       name=flags[j]+"_TotalNumberOfClusters";
00200       if(MEMap.find(name)==MEMap.end()) {
00201         if(flags[j] == "OnTrack"){
00202           MEMap[name]=bookME1D("TH1nClustersOn", name.Data());
00203         }else{
00204           MEMap[name]=bookME1D("TH1nClustersOff", name.Data());
00205         }
00206         if(Trend_On_){
00207           name+="Trend";
00208           if(flags[j] == "OnTrack"){
00209             MEMap[name]=bookMETrend("TH1nClustersOn", name.Data());
00210           }else{
00211             MEMap[name]=bookMETrend("TH1nClustersOff", name.Data());
00212           }
00213         }      
00214       }
00215     }// End Loop on onTrack, offTrack
00216     
00217     //  LogTrace("SiStripMonitorTrack") << " Detid " << *detid 
00218     //                                  << " SubDet " << GetSubDetAndLayer(*detid).first 
00219     //                                  << " Layer "  << GetSubDetAndLayer(*detid).second;
00220 
00221      
00222     // book Layer and RING plots      
00223     if (DetectedLayers.find(folder_organizer.GetSubDetAndLayer(detid,flag_ring)) == DetectedLayers.end()){
00224       
00225       DetectedLayers[folder_organizer.GetSubDetAndLayer(detid,flag_ring)]=true;
00226       for (int j=0;j<off_Flag;j++){     
00227         folder_organizer.setLayerFolder(*detid_iter,folder_organizer.GetSubDetAndLayer(*detid_iter,flag_ring).second,flag_ring);
00228         bookTrendMEs("layer",(folder_organizer.GetSubDetAndLayer(*detid_iter,flag_ring)).second,*detid_iter,flags[j]);
00229       }
00230     }
00231     
00232     if(Mod_On_){
00233       //    book module plots
00234       folder_organizer.setDetectorFolder(*detid_iter);
00235       bookModMEs("det",*detid_iter);
00236     }
00237 
00238     DetectedLayers[folder_organizer.GetSubDetAndLayer(*detid_iter,flag_ring)] |= (DetectedLayers.find(folder_organizer.GetSubDetAndLayer(*detid_iter,flag_ring)) == DetectedLayers.end());
00239   }//end loop on detectors detid
00240   
00241   //  book SubDet plots
00242   for (std::map<std::pair<std::string,int32_t>,bool>::const_iterator iter=DetectedLayers.begin(); iter!=DetectedLayers.end();iter++){
00243     for (int j=0;j<off_Flag;j++){ // Loop on onTrack, offTrack
00244       folder_organizer.setDetectorFolder(0);
00245       dbe->cd("SiStrip/MechanicalView/"+iter->first.first);
00246       name=flags[j]+"_in_"+iter->first.first; 
00247       bookSubDetMEs(name,flags[j]); //for subdets
00248     }//end loop on onTrack,offTrack
00249   }  
00250 
00251 }

MonitorElement * SiStripMonitorTrack::bookME1D ( const char *  ParameterSetLabel,
const char *  HistoName 
) [private]

Definition at line 519 of file SiStripMonitorTrack.cc.

References DQMStore::book1D(), conf_, dbe, edm::ParameterSet::getParameter(), and Parameters.

Referenced by book(), bookModMEs(), bookSubDetMEs(), and bookTrendMEs().

00520 {
00521   Parameters =  conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
00522   return dbe->book1D(HistoName,HistoName,
00523                          Parameters.getParameter<int32_t>("Nbinx"),
00524                          Parameters.getParameter<double>("xmin"),
00525                          Parameters.getParameter<double>("xmax")
00526                     );
00527 }

MonitorElement * SiStripMonitorTrack::bookME2D ( const char *  ParameterSetLabel,
const char *  HistoName 
) [private]

Definition at line 530 of file SiStripMonitorTrack.cc.

References DQMStore::book2D(), conf_, dbe, edm::ParameterSet::getParameter(), and Parameters.

00531 {
00532   Parameters =  conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
00533   return dbe->book2D(HistoName,HistoName,
00534                      Parameters.getParameter<int32_t>("Nbinx"),
00535                      Parameters.getParameter<double>("xmin"),
00536                      Parameters.getParameter<double>("xmax"),
00537                      Parameters.getParameter<int32_t>("Nbiny"),
00538                      Parameters.getParameter<double>("ymin"),
00539                      Parameters.getParameter<double>("ymax")
00540                      );
00541 }

MonitorElement * SiStripMonitorTrack::bookME3D ( const char *  ParameterSetLabel,
const char *  HistoName 
) [private]

Definition at line 544 of file SiStripMonitorTrack.cc.

References DQMStore::book3D(), conf_, dbe, edm::ParameterSet::getParameter(), and Parameters.

00545 {
00546   Parameters =  conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
00547   return dbe->book3D(HistoName,HistoName,
00548                      Parameters.getParameter<int32_t>("Nbinx"),
00549                      Parameters.getParameter<double>("xmin"),
00550                      Parameters.getParameter<double>("xmax"),
00551                      Parameters.getParameter<int32_t>("Nbiny"),
00552                      Parameters.getParameter<double>("ymin"),
00553                      Parameters.getParameter<double>("ymax"),
00554                      Parameters.getParameter<int32_t>("Nbinz"),
00555                      Parameters.getParameter<double>("zmin"),
00556                      Parameters.getParameter<double>("zmax")
00557                      );
00558 }

MonitorElement * SiStripMonitorTrack::bookMEProfile ( const char *  ParameterSetLabel,
const char *  HistoName 
) [private]

Definition at line 561 of file SiStripMonitorTrack.cc.

References DQMStore::bookProfile(), conf_, dbe, edm::ParameterSet::getParameter(), and Parameters.

Referenced by bookModMEs().

00562 {
00563     Parameters =  conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
00564     return dbe->bookProfile(HistoName,HistoName,
00565                             Parameters.getParameter<int32_t>("Nbinx"),
00566                             Parameters.getParameter<double>("xmin"),
00567                             Parameters.getParameter<double>("xmax"),
00568                             Parameters.getParameter<int32_t>("Nbiny"),
00569                             Parameters.getParameter<double>("ymin"),
00570                             Parameters.getParameter<double>("ymax"),
00571                             "" );
00572 }

MonitorElement * SiStripMonitorTrack::bookMETrend ( const char *  ParameterSetLabel,
const char *  HistoName 
) [private]

Definition at line 575 of file SiStripMonitorTrack.cc.

References DQMStore::bookProfile(), conf_, dbe, edm::ParameterSet::getParameter(), me, and Parameters.

Referenced by book(), bookSubDetMEs(), and bookTrendMEs().

00576 {
00577   Parameters =  conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
00578   edm::ParameterSet ParametersTrend =  conf_.getParameter<edm::ParameterSet>("Trending");
00579   MonitorElement* me = dbe->bookProfile(HistoName,HistoName,
00580                                         ParametersTrend.getParameter<int32_t>("Nbins"),
00581                                         0,
00582                                         ParametersTrend.getParameter<int32_t>("Nbins"),
00583                                         100, //that parameter should not be there !?
00584                                         Parameters.getParameter<double>("xmin"),
00585                                         Parameters.getParameter<double>("xmax"),
00586                                         "" );
00587   if(!me) return me;
00588   char buffer[256];
00589   sprintf(buffer,"EventId/%d",ParametersTrend.getParameter<int32_t>("Steps"));
00590   me->setAxisTitle(std::string(buffer),1);
00591   return me;
00592 }

void SiStripMonitorTrack::bookModMEs ( TString  name,
uint32_t  id 
) [private]

Definition at line 254 of file SiStripMonitorTrack.cc.

References DQMStore::book1D(), bookME1D(), bookMEProfile(), SiStripMonitorTrack::ModMEs::ClusterCharge, SiStripMonitorTrack::ModMEs::ClusterChargeCorr, SiStripMonitorTrack::ModMEs::ClusterPGV, SiStripMonitorTrack::ModMEs::ClusterPos, SiStripMonitorTrack::ModMEs::ClusterStoN, SiStripMonitorTrack::ModMEs::ClusterStoNCorr, SiStripMonitorTrack::ModMEs::ClusterWidth, SiStripHistoId::createHistoId(), dbe, ModMEsMap, SiStripDetCabling_, and DQMStore::tag().

Referenced by book().

00255 {
00256   SiStripHistoId hidmanager;
00257   std::string hid = hidmanager.createHistoId("",name.Data(),id);
00258   std::map<TString, ModMEs>::iterator iModME  = ModMEsMap.find(TString(hid));
00259   if(iModME==ModMEsMap.end()){
00260     ModMEs theModMEs; 
00261     // Cluster Width
00262     theModMEs.ClusterWidth=bookME1D("TH1ClusterWidth", hidmanager.createHistoId("ClusterWidth_OnTrack",name.Data(),id).c_str()); 
00263     dbe->tag(theModMEs.ClusterWidth,id); 
00264     // Cluster Charge
00265     theModMEs.ClusterCharge=bookME1D("TH1ClusterCharge", hidmanager.createHistoId("ClusterCharge_OnTrack",name.Data(),id).c_str());
00266     dbe->tag(theModMEs.ClusterCharge,id); 
00267     // Cluster StoN
00268     theModMEs.ClusterStoN=bookME1D("TH1ClusterStoN", hidmanager.createHistoId("ClusterStoN_OnTrack",name.Data(),id).c_str());
00269     dbe->tag(theModMEs.ClusterStoN,id); 
00270     // Cluster Charge Corrected
00271     theModMEs.ClusterChargeCorr=bookME1D("TH1ClusterChargeCorr", hidmanager.createHistoId("ClusterChargeCorr_OnTrack",name.Data(),id).c_str());
00272     dbe->tag(theModMEs.ClusterChargeCorr,id); 
00273     // Cluster StoN Corrected
00274     theModMEs.ClusterStoNCorr=bookME1D("TH1ClusterStoNCorr", hidmanager.createHistoId("ClusterStoNCorr_OnTrack",name.Data(),id).c_str());
00275     dbe->tag(theModMEs.ClusterStoNCorr,id); 
00276     // Cluster Position
00277     short total_nr_strips = SiStripDetCabling_->nApvPairs(id) * 2 * 128;
00278     theModMEs.ClusterPos=dbe->book1D(hidmanager.createHistoId("ClusterPosition_OnTrack",name.Data(),id).c_str(),hidmanager.createHistoId("ClusterPosition_OnTrack",name.Data(),id).c_str(),total_nr_strips,0.5,total_nr_strips+0.5);
00279     dbe->tag(theModMEs.ClusterPos,id); 
00280     // Cluster PGV
00281     theModMEs.ClusterPGV=bookMEProfile("TProfileClusterPGV", hidmanager.createHistoId("PGV_OnTrack",name.Data(),id).c_str()); 
00282     dbe->tag(theModMEs.ClusterPGV,id); 
00283     // Symmetric Eta function Eta=(L+R)/(2C) (Capacitive Coupling)
00284     //    theModMEs.ClusterSymmEtaCC=bookME1D("TH1ClusterSymmEtaCC", hidmanager.createHistoId("ClusterSymmEtaCC",name.Data(),id).c_str()); 
00285     //    dbe->tag(theModMEs.ClusterSymmEtaCC,id); 
00286     //bookeeping
00287     ModMEsMap[hid]=theModMEs;
00288   }
00289 }

void SiStripMonitorTrack::bookSubDetMEs ( TString  name,
TString  flag 
) [private]

Definition at line 416 of file SiStripMonitorTrack.cc.

References bookME1D(), bookMETrend(), CCAnalysis_On_, SiStripMonitorTrack::LayerMEs::ClusterCharge, SiStripMonitorTrack::LayerMEs::ClusterChargeCorr, SiStripMonitorTrack::LayerMEs::ClusterChargeCorrTrend, SiStripMonitorTrack::LayerMEs::ClusterChargeTrend, SiStripMonitorTrack::LayerMEs::ClusterEstimatorCC, SiStripMonitorTrack::LayerMEs::ClusterNoise, SiStripMonitorTrack::LayerMEs::ClusterNoiseTrend, SiStripMonitorTrack::LayerMEs::ClusterStoN, SiStripMonitorTrack::LayerMEs::ClusterStoNCorr, SiStripMonitorTrack::LayerMEs::ClusterStoNCorrTrend, SiStripMonitorTrack::LayerMEs::ClusterStoNTrend, SiStripMonitorTrack::LayerMEs::ClusterSymmEtaCC, SiStripMonitorTrack::LayerMEs::ClusterSymmEtaCCTrend, SiStripMonitorTrack::LayerMEs::ClusterWidth, SiStripMonitorTrack::LayerMEs::ClusterWidthCC, SiStripMonitorTrack::LayerMEs::ClusterWidthTrend, MonitorElement::getTH1(), LayerMEsMap, SiStripMonitorTrack::LayerMEs::nClusters, SiStripMonitorTrack::LayerMEs::nClustersTrend, and Trend_On_.

Referenced by book().

00417 {
00418   std::map<TString, LayerMEs>::iterator iLayerME  = LayerMEsMap.find(name);
00419   char completeName[1024];
00420   if(iLayerME==LayerMEsMap.end()){
00421     LayerMEs theLayerMEs;
00422     
00423     // TotalNumber of Cluster 
00424 
00425     if (flag=="OnTrack"){
00426       sprintf(completeName,"Summary_TotalNumberOfClusters_%s",name.Data());
00427       theLayerMEs.nClusters=bookME1D("TH1nClustersOn", completeName);
00428       theLayerMEs.nClusters->getTH1()->StatOverflows(kTRUE);
00429     }else{
00430       sprintf(completeName,"Summary_TotalNumberOfClusters_%s",name.Data());
00431       theLayerMEs.nClusters=bookME1D("TH1nClustersOff", completeName);
00432       theLayerMEs.nClusters->getTH1()->StatOverflows(kTRUE);
00433     }
00434     
00435     // Cluster Width
00436     sprintf(completeName,"Summary_ClusterWidth_%s",name.Data());
00437     theLayerMEs.ClusterWidth=bookME1D("TH1ClusterWidth", completeName);
00438     
00439     // Cluster Noise
00440     sprintf(completeName,"Summary_ClusterNoise_%s",name.Data());
00441     theLayerMEs.ClusterNoise=bookME1D("TH1ClusterNoise", completeName);
00442     
00443     // Cluster Charge
00444     sprintf(completeName,"Summary_ClusterCharge_%s",name.Data());
00445     theLayerMEs.ClusterCharge=bookME1D("TH1ClusterCharge", completeName);
00446     
00447     // Cluster StoN
00448     sprintf(completeName,"Summary_ClusterStoN_%s",name.Data());
00449     theLayerMEs.ClusterStoN=bookME1D("TH1ClusterStoN", completeName);
00450 
00451 
00452     if(Trend_On_){
00453       if (flag=="OnTrack"){
00454         // TotalNumber of Cluster 
00455         sprintf(completeName,"Trend_TotalNumberOfClusters_%s",name.Data());
00456         theLayerMEs.nClustersTrend=bookMETrend("TH1nClustersOn", completeName);
00457       }else{
00458         sprintf(completeName,"Trend_TotalNumberOfClusters_%s",name.Data());
00459         theLayerMEs.nClustersTrend=bookMETrend("TH1nClustersOff", completeName);
00460       }
00461       // Cluster Width
00462       sprintf(completeName,"Trend_ClusterWidth_%s",name.Data());
00463       theLayerMEs.ClusterWidthTrend=bookMETrend("TH1ClusterWidth", completeName);
00464       // Cluster Noise
00465       sprintf(completeName,"Trend_ClusterNoise_%s",name.Data());
00466       theLayerMEs.ClusterNoiseTrend=bookMETrend("TH1ClusterNoise", completeName);
00467       // Cluster Charge
00468       sprintf(completeName,"Trend_ClusterCharge_%s",name.Data());
00469       theLayerMEs.ClusterChargeTrend=bookMETrend("TH1ClusterCharge", completeName);
00470       // Cluster StoN
00471       sprintf(completeName,"Trend_ClusterStoN_%s",name.Data());
00472       theLayerMEs.ClusterStoNTrend=bookMETrend("TH1ClusterStoN", completeName); 
00473     }
00474 
00475     if (flag=="OnTrack"){
00476       //Cluster StoNCorr
00477       sprintf(completeName,"Summary_ClusterStoNCorr_%s",name.Data());
00478       theLayerMEs.ClusterStoNCorr=bookME1D("TH1ClusterStoNCorr", completeName);
00479       
00480       // Cluster ChargeCorr
00481       sprintf(completeName,"Summary_ClusterChargeCorr_%s",name.Data());
00482       theLayerMEs.ClusterChargeCorr=bookME1D("TH1ClusterChargeCorr", completeName);
00483 
00484       // Symmetric Eta function Eta=(L+R)/(2C) (Capacitive Coupling)
00485       sprintf(completeName,"Summary_ClusterSymmEtaCC_%s",name.Data());
00486       theLayerMEs.ClusterSymmEtaCC=bookME1D("TH1ClusterSymmEtaCC", completeName);
00487          
00488       // Histograms booked and filled only if Charge Coupling Analysis is selected
00489       if(CCAnalysis_On_) {
00490         // Cluster Width (perpendicular tracks, Capacitive Coupling analysis)
00491         sprintf(completeName,"Summary_ClusterWidthCC_%s",name.Data());
00492         theLayerMEs.ClusterWidthCC=bookME1D("TH1ClusterWidthCC", completeName);
00493         // Charge Coupling Estimator x=Eta/(1+2xEta) (Capacitive Coupling analysis)
00494         sprintf(completeName,"Summary_ClusterEstimatorCC_%s",name.Data());
00495         theLayerMEs.ClusterEstimatorCC=bookME1D("TH1ClusterEstimatorCC", completeName);
00496       }
00497       
00498       if(Trend_On_){ 
00499         // Cluster StoNCorr
00500         sprintf(completeName,"Trend_ClusterStoNCorr_%s",name.Data());
00501         theLayerMEs.ClusterStoNCorrTrend=bookMETrend("TH1ClusterStoNCorr", completeName);     
00502         // Cluster ChargeCorr
00503         sprintf(completeName,"Trend_ClusterChargeCorr_%s",name.Data());
00504         theLayerMEs.ClusterChargeCorrTrend=bookMETrend("TH1ClusterChargeCorr", completeName);
00505         // Cluster Eta function
00506         sprintf(completeName,"Trend_ClusterSymmEtaCC_%s",name.Data());
00507         theLayerMEs.ClusterSymmEtaCCTrend=bookMETrend("TH1ClusterSymmEtaCC", completeName);
00508 
00509 
00510       }
00511     }
00512     
00513     //bookeeping
00514     LayerMEsMap[name]=theLayerMEs;
00515   }
00516 }

void SiStripMonitorTrack::bookTrendMEs ( TString  name,
int32_t  layer,
uint32_t  id,
std::string  flag 
) [private]

Definition at line 291 of file SiStripMonitorTrack.cc.

References DQMStore::book1D(), bookME1D(), bookMETrend(), CCAnalysis_On_, SiStripMonitorTrack::LayerMEs::ClusterCharge, SiStripMonitorTrack::LayerMEs::ClusterChargeCorr, SiStripMonitorTrack::LayerMEs::ClusterChargeCorrTrend, SiStripMonitorTrack::LayerMEs::ClusterChargeTrend, SiStripMonitorTrack::LayerMEs::ClusterEstimatorCC, SiStripMonitorTrack::LayerMEs::ClusterNoise, SiStripMonitorTrack::LayerMEs::ClusterNoiseTrend, SiStripMonitorTrack::LayerMEs::ClusterPos, SiStripMonitorTrack::LayerMEs::ClusterStoN, SiStripMonitorTrack::LayerMEs::ClusterStoNCorr, SiStripMonitorTrack::LayerMEs::ClusterStoNCorrTrend, SiStripMonitorTrack::LayerMEs::ClusterStoNTrend, SiStripMonitorTrack::LayerMEs::ClusterSymmEtaCC, SiStripMonitorTrack::LayerMEs::ClusterSymmEtaCCTrend, SiStripMonitorTrack::LayerMEs::ClusterWidth, SiStripMonitorTrack::LayerMEs::ClusterWidthCC, SiStripMonitorTrack::LayerMEs::ClusterWidthTrend, SiStripHistoId::createHistoLayer(), dbe, lat::endl(), flag_ring, TIBDetId::layer(), TOBDetId::layer(), LayerMEsMap, TIDDetId::ring(), TECDetId::ring(), TIDDetId::side(), TECDetId::side(), SiStripDetCabling_, DQMStore::tag(), Trend_On_, TIDDetId::wheel(), and TECDetId::wheel().

Referenced by book().

00292 {
00293   char rest[1024];
00294   int subdetid = ((id>>25)&0x7);
00295   if(       subdetid==3 ){
00296   // ---------------------------  TIB  --------------------------- //
00297     TIBDetId tib1 = TIBDetId(id);
00298     sprintf(rest,"TIB__layer__%d",tib1.layer());
00299   }else if( subdetid==4){
00300   // ---------------------------  TID  --------------------------- //
00301     TIDDetId tid1 = TIDDetId(id);
00302     sprintf(rest,"TID__side__%d__wheel__%d",tid1.side(),tid1.wheel());
00303   }else if( subdetid==5){
00304   // ---------------------------  TOB  --------------------------- //
00305     TOBDetId tob1 = TOBDetId(id);
00306     sprintf(rest,"TOB__layer__%d",tob1.layer());
00307   }else if( subdetid==6){
00308   // ---------------------------  TEC  --------------------------- //
00309     TECDetId tec1 = TECDetId(id);
00310     sprintf(rest,"TEC__side__%d__wheel__%d",tec1.side(),tec1.wheel());
00311   }else{
00312   // ---------------------------  ???  --------------------------- //
00313     edm::LogError("SiStripTkDQM|WrongInput")<<"no such subdetector type :"<<subdetid<<" no folder set!"<<std::endl;
00314     return;
00315   }
00316   
00317   if(flag_ring){
00318     if( subdetid==4){
00319       // ---------------------------  TID  --------------------------- //
00320       TIDDetId tid1 = TIDDetId(id);
00321       sprintf(rest,"TID__side__%d__ring__%d",tid1.side(),tid1.ring());
00322     }else if( subdetid==6){
00323       // ---------------------------  TEC  --------------------------- //
00324       TECDetId tec1 = TECDetId(id);
00325       sprintf(rest,"TEC__side__%d__ring__%d",tec1.side(),tec1.ring());
00326     }
00327   }
00328 
00329 
00330   SiStripHistoId hidmanager;
00331   std::string hid = hidmanager.createHistoLayer("",name.Data(),rest,flag);
00332   std::map<TString, LayerMEs>::iterator iLayerME  = LayerMEsMap.find(TString(hid));
00333   if(iLayerME==LayerMEsMap.end()){
00334     LayerMEs theLayerMEs; 
00335  
00336     // Cluster Width
00337     theLayerMEs.ClusterWidth=bookME1D("TH1ClusterWidth", hidmanager.createHistoLayer("Summary_ClusterWidth",name.Data(),rest,flag).c_str()); 
00338     dbe->tag(theLayerMEs.ClusterWidth,layer); 
00339     
00340     // Cluster Noise
00341     theLayerMEs.ClusterNoise=bookME1D("TH1ClusterNoise", hidmanager.createHistoLayer("Summary_ClusterNoise",name.Data(),rest,flag).c_str()); 
00342     dbe->tag(theLayerMEs.ClusterNoise,layer); 
00343     
00344     // Cluster Charge
00345     theLayerMEs.ClusterCharge=bookME1D("TH1ClusterCharge", hidmanager.createHistoLayer("Summary_ClusterCharge",name.Data(),rest,flag).c_str());
00346     dbe->tag(theLayerMEs.ClusterCharge,layer);
00347     
00348     // Cluster StoN
00349     theLayerMEs.ClusterStoN=bookME1D("TH1ClusterStoN", hidmanager.createHistoLayer("Summary_ClusterStoN",name.Data(),rest,flag).c_str());
00350     dbe->tag(theLayerMEs.ClusterStoN,layer); 
00351 
00352     // Trends
00353     if(Trend_On_){
00354       // Cluster Width
00355       theLayerMEs.ClusterWidthTrend=bookMETrend("TH1ClusterWidth", hidmanager.createHistoLayer("Trend_ClusterWidth",name.Data(),rest,flag).c_str()); 
00356       dbe->tag(theLayerMEs.ClusterWidthTrend,layer); 
00357       // Cluster Noise
00358       theLayerMEs.ClusterNoiseTrend=bookMETrend("TH1ClusterNoise", hidmanager.createHistoLayer("Trend_ClusterNoise",name.Data(),rest,flag).c_str()); 
00359       dbe->tag(theLayerMEs.ClusterNoiseTrend,layer); 
00360       // Cluster Charge
00361       theLayerMEs.ClusterChargeTrend=bookMETrend("TH1ClusterCharge", hidmanager.createHistoLayer("Trend_ClusterCharge",name.Data(),rest,flag).c_str());
00362       dbe->tag(theLayerMEs.ClusterChargeTrend,layer); 
00363       // Cluster StoN
00364       theLayerMEs.ClusterStoNTrend=bookMETrend("TH1ClusterStoN", hidmanager.createHistoLayer("Trend_ClusterStoN",name.Data(),rest,flag).c_str());
00365       dbe->tag(theLayerMEs.ClusterStoNTrend,layer); 
00366     }
00367     
00368     if(flag=="OnTrack"){
00369       // Cluster Charge Corrected
00370       theLayerMEs.ClusterChargeCorr=bookME1D("TH1ClusterChargeCorr", hidmanager.createHistoLayer("Summary_ClusterChargeCorr",name.Data(),rest,flag).c_str());
00371       dbe->tag(theLayerMEs.ClusterChargeCorr,layer); 
00372       // Cluster StoN Corrected
00373       theLayerMEs.ClusterStoNCorr=bookME1D("TH1ClusterStoNCorr", hidmanager.createHistoLayer("Summary_ClusterStoNCorr",name.Data(),rest,flag).c_str());
00374       dbe->tag(theLayerMEs.ClusterStoNCorr,layer); 
00375       // Symmetric Eta function Eta=(L+R)/(2C) (Capacitive Coupling)
00376       theLayerMEs.ClusterSymmEtaCC=bookME1D("TH1ClusterSymmEtaCC", hidmanager.createHistoLayer("Summary_ClusterSymmEtaCC",name.Data(),rest,flag).c_str()); 
00377       dbe->tag(theLayerMEs.ClusterSymmEtaCC,layer); 
00378       
00379       // Histograms booked and filled only if Charge Coupling Analysis is selected
00380       if(CCAnalysis_On_) {
00381         // Cluster Width (perpendicular tracks, Capacitive Coupling analysis)
00382         theLayerMEs.ClusterWidthCC=bookME1D("TH1ClusterWidthCC", hidmanager.createHistoLayer("Summary_ClusterWidthCC",name.Data(),rest,flag).c_str()); 
00383         dbe->tag(theLayerMEs.ClusterWidthCC,layer); 
00384         // Charge Coupling Estimator x=Eta/(1+2xEta) (Capacitive Coupling analysis)
00385         theLayerMEs.ClusterEstimatorCC=bookME1D("TH1ClusterEstimatorCC", hidmanager.createHistoLayer("Summary_ClusterEstimatorCC",name.Data(),rest,flag).c_str()); 
00386         dbe->tag(theLayerMEs.ClusterEstimatorCC,layer); 
00387       }
00388       
00389       if(Trend_On_){
00390         // Cluster Charge Corrected
00391         theLayerMEs.ClusterChargeCorrTrend=bookMETrend("TH1ClusterChargeCorr", hidmanager.createHistoLayer("Trend_ClusterChargeCorr",name.Data(),rest,flag).c_str());
00392         dbe->tag(theLayerMEs.ClusterChargeCorrTrend,layer); 
00393         
00394         // Cluster StoN Corrected
00395         theLayerMEs.ClusterStoNCorrTrend=bookMETrend("TH1ClusterStoNCorr", hidmanager.createHistoLayer("Trend_ClusterStoNCorr",name.Data(),rest,flag).c_str());
00396         dbe->tag(theLayerMEs.ClusterStoNCorrTrend,layer); 
00397         
00398         // Symmetric Eta function Eta=(L+R)/(2C) (Capacitive Coupling)
00399         theLayerMEs.ClusterSymmEtaCCTrend=bookMETrend("TH1ClusterSymmEtaCC", hidmanager.createHistoLayer("Trend_ClusterSymmEtaCC",name.Data(),rest,flag).c_str()); 
00400         dbe->tag(theLayerMEs.ClusterSymmEtaCCTrend,layer); 
00401       }
00402       
00403     }
00404     
00405     //Cluster Position
00406     short total_nr_strips = SiStripDetCabling_->nApvPairs(id) * 2 * 128; 
00407     theLayerMEs.ClusterPos= dbe->book1D(hidmanager.createHistoLayer("Summary_ClusterPosition",name.Data(),rest,flag).c_str(),hidmanager.createHistoLayer("Summary_ClusterPosition",name.Data(),rest,flag).c_str(),total_nr_strips, 0.5,total_nr_strips+0.5);
00408     dbe->tag(theLayerMEs.ClusterPos,layer); 
00409     
00410     //bookeeping
00411     LayerMEsMap[hid]=theLayerMEs;
00412   }
00413   
00414 }

bool SiStripMonitorTrack::clusterInfos ( SiStripClusterInfo cluster,
const uint32_t &  detid,
std::string  flag,
LocalVector  LV 
) [private]

Definition at line 755 of file SiStripMonitorTrack.cc.

References conf_, SiStripHistoId::createHistoId(), SiStripHistoId::createHistoLayer(), lat::endl(), fillCapacitiveCouplingMEs(), fillModMEs(), fillTrendMEs(), flag_ring, folder_organizer, edm::ParameterSet::getParameter(), SiStripClusterInfo::getSignalOverNoiseRescaledByGain(), SiStripFolderOrganizer::GetSubDetAndLayer(), SiStripClusterInfo::getWidth(), TIBDetId::layer(), TOBDetId::layer(), LogTrace, PV3DBase< T, PVType, FrameType >::mag(), Mod_On_, name, NClus, TIDDetId::ring(), TECDetId::ring(), TIDDetId::side(), TECDetId::side(), ss, TIDDetId::wheel(), TECDetId::wheel(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by AllClusters(), and RecHitInfo().

00756 {
00757   LogTrace("SiStripMonitorTrack") << "\n["<<__PRETTY_FUNCTION__<<"]" << std::endl;
00758   //folder_organizer.setDetectorFolder(0);
00759   if (cluster==0) return false;
00760   // if one imposes a cut on the clusters, apply it
00761   const  edm::ParameterSet ps = conf_.getParameter<edm::ParameterSet>("ClusterConditions");
00762   if( ps.getParameter<bool>("On") &&
00763       (cluster->getSignalOverNoiseRescaledByGain() < ps.getParameter<double>("minStoN") ||
00764        cluster->getSignalOverNoiseRescaledByGain() > ps.getParameter<double>("maxStoN") ||
00765        cluster->getWidth() < ps.getParameter<double>("minWidth") ||
00766        cluster->getWidth() > ps.getParameter<double>("maxWidth")                    )) return false;
00767   // start of the analysis
00768   
00769   int SubDet_enum = StripSubdetector(detid).subdetId()-3;
00770   int iflag =0;
00771   if      (flag=="OnTrack")  iflag=0;
00772   else if (flag=="OffTrack") iflag=1;
00773   NClus[SubDet_enum][iflag]++;
00774   std::stringstream ss;
00775   //  const_cast<SiStripClusterInfo*>(cluster)->print(ss);
00776   LogTrace("SiStripMonitorTrack") << "\n["<<__PRETTY_FUNCTION__<<"]\n" << ss.str() << std::endl;
00777   
00778   float cosRZ = -2;
00779   LogTrace("SiStripMonitorTrack")<< "\n\tLV " << LV.x() << " " << LV.y() << " " << LV.z() << " " << LV.mag() << std::endl;
00780   if (LV.mag()!=0){
00781     cosRZ= fabs(LV.z())/LV.mag();
00782     LogTrace("SiStripMonitorTrack")<< "\n\t cosRZ " << cosRZ << std::endl;
00783   }
00784   std::string name;
00785   
00786   // Filling SubDet Plots (on Track + off Track)
00787   std::pair<std::string,int32_t> SubDetAndLayer = folder_organizer.GetSubDetAndLayer(detid,flag_ring);
00788   name=flag+"_in_"+SubDetAndLayer.first;
00789   fillTrendMEs(cluster,name,cosRZ,flag);
00790   fillCapacitiveCouplingMEs(cluster,name,cosRZ,flag);
00791   
00792   char rest[1024];
00793   int subdetid = ((detid>>25)&0x7);
00794   if(       subdetid==3 ){
00795     // ---------------------------  TIB  --------------------------- //
00796     TIBDetId tib1 = TIBDetId(detid);
00797     sprintf(rest,"TIB__layer__%d",tib1.layer());
00798   }else if( subdetid==4){
00799     // ---------------------------  TID  --------------------------- //
00800     TIDDetId tid1 = TIDDetId(detid);
00801     sprintf(rest,"TID__side__%d__wheel__%d",tid1.side(),tid1.wheel());
00802   }else if( subdetid==5){
00803     // ---------------------------  TOB  --------------------------- //
00804     TOBDetId tob1 = TOBDetId(detid);
00805     sprintf(rest,"TOB__layer__%d",tob1.layer());
00806   }else if( subdetid==6){
00807     // ---------------------------  TEC  --------------------------- //
00808     TECDetId tec1 = TECDetId(detid);
00809     sprintf(rest,"TEC__side__%d__wheel__%d",tec1.side(),tec1.wheel());
00810   }else{
00811     // ---------------------------  ???  --------------------------- //
00812     edm::LogError("SiStripTkDQM|WrongInput")<<"no such subdetector type :"<<subdetid<<" no folder set!"<<std::endl;
00813     return 0;
00814   }
00815 
00816   if(flag_ring){
00817     if( subdetid==4){
00818       // ---------------------------  TID  --------------------------- //
00819       TIDDetId tid1 = TIDDetId(detid);
00820       sprintf(rest,"TID__side__%d__ring__%d",tid1.side(),tid1.ring());
00821     }else if( subdetid==6){
00822       // ---------------------------  TEC  --------------------------- //
00823       TECDetId tec1 = TECDetId(detid);
00824       sprintf(rest,"TEC__side__%d__ring__%d",tec1.side(),tec1.ring());
00825     }
00826   }
00827 
00828   // Filling Layer Plots
00829 
00830   SiStripHistoId hidmanager1;
00831   
00832   name= hidmanager1.createHistoLayer("","layer",rest,flag);
00833   fillTrendMEs(cluster,name,cosRZ,flag);
00834   fillCapacitiveCouplingMEs(cluster,name,cosRZ,flag);
00835   
00836   // Module plots filled only for onTrack Clusters
00837   if(Mod_On_){
00838     if(flag=="OnTrack"){
00839       SiStripHistoId hidmanager2;
00840       name =hidmanager2.createHistoId("","det",detid);
00841       fillModMEs(cluster,name,cosRZ); 
00842     }
00843   }
00844   return true;
00845 }

void SiStripMonitorTrack::endJob ( void   )  [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 65 of file SiStripMonitorTrack.cc.

References conf_, dbe, edm::ParameterSet::getParameter(), DQMStore::save(), and DQMStore::showDirStructure().

00066 {
00067   if(conf_.getParameter<bool>("OutputMEsInRootFile")){
00068     dbe->showDirStructure();
00069     dbe->save(conf_.getParameter<std::string>("OutputFileName"));
00070   }
00071 }

void SiStripMonitorTrack::fillCapacitiveCouplingMEs ( SiStripClusterInfo cluster,
std::string  name,
float  cos,
std::string  flag 
) [private]

Definition at line 969 of file SiStripMonitorTrack.cc.

References CCAnalysis_On_, dsv_SiStripCluster, dsv_SiStripRawDigi, lat::endl(), edm::Handle< T >::failedToGet(), fillME(), fillTrend(), SiStripClusterInfo::getCharge(), SiStripClusterInfo::getChargeLRFirstNeighbour(), SiStripClusterInfo::getDetId(), SiStripClusterInfo::getFirstStrip(), SiStripClusterInfo::getMaxCharge(), SiStripClusterInfo::getMaxPosition(), SiStripClusterInfo::getNoiseRescaledByGain(), SiStripClusterInfo::getRawChargeCLR(), SiStripClusterInfo::getSignalOverNoiseRescaledByGain(), SiStripClusterInfo::getStripAmplitudes(), SiStripClusterInfo::getWidth(), it, LayerMEsMap, LogDebug, LogTrace, edm::Handle< T >::product(), RawDigis_On_, edm::DetSet< T >::size(), and SymEta().

Referenced by clusterInfos().

00969                                                                                                                          {
00970   std::map<TString, LayerMEs>::iterator iLayerME  = LayerMEsMap.find(name);
00971   if(iLayerME!=LayerMEsMap.end()){
00972     // Capacitive Coupling analysis
00973     if( cos > 0.9 ) { // perpendicular track
00974       LogTrace("SiStripMonitorTrack") << "\t\t Perpendicular Track, cluster center " << cluster->getMaxPosition() << std::endl;
00975       
00976       // calculate symmetric eta function with only the Central + First Left / First Right strips
00977       float chargeCentral = 0.;
00978       std::pair< float,float > chargeLeftRight;
00979       //
00980       if(RawDigis_On_) {
00981         // with RawDigi
00982         if(!dsv_SiStripRawDigi.failedToGet()) {
00983           if((*(dsv_SiStripRawDigi.product())).find(cluster->getDetId()) != (*(dsv_SiStripRawDigi.product())).end() ) { // ...if they exist
00984             const edm::DetSet<SiStripRawDigi>    ds_SiStripRawDigi = (*(dsv_SiStripRawDigi.product()))[cluster->getDetId()];
00985             edmNew::DetSet<SiStripCluster> ds_SiStripCluster = (*(dsv_SiStripCluster.product()))[cluster->getDetId()];
00986             LogDebug("SiStripMonitorTrack") << "RawDigis found " << ds_SiStripRawDigi.size() << std::endl;
00987             std::vector<float> chargesCLR = cluster->getRawChargeCLR(ds_SiStripRawDigi,ds_SiStripCluster,std::string("VirginRaw"));
00988             chargeCentral = chargesCLR[0];
00989             chargeLeftRight.first = chargesCLR[1];
00990             chargeLeftRight.second = chargesCLR[2];
00991           } // no SiStripRawDigi at all
00992         }
00993       } else {
00994         LogDebug("SiStripMonitorTrack") << "RawDigis " << RawDigis_On_ << " take info from cluster strips" << std::endl;
00995         // with cluster strips only
00996         chargeCentral = cluster->getMaxCharge();
00997         chargeLeftRight = cluster->getChargeLRFirstNeighbour();
00998       }
00999       float symmetricEta = SymEta(chargeCentral,chargeLeftRight.first,chargeLeftRight.second);
01000       float ccEstimator  = symmetricEta / ( 1 + 2 * symmetricEta );
01001       
01002       // Summary
01003       LogTrace("SiStripMonitorTrack")    
01004         <<"\n\t\t Cluster with multiplicity " << cluster->getWidth()
01005         << " in det " << cluster->getDetId()
01006         << ": Eta Function from Charge"
01007         <<"\n\t\t\t Signal = " << cluster->getCharge()
01008         <<"\n\t\t\t Noise  = " << cluster->getNoiseRescaledByGain()
01009         <<"\n\t\t\t S/N    = " << cluster->getSignalOverNoiseRescaledByGain()
01010         <<"\n\t\t\t  Cluster Central C = " << cluster->getMaxCharge()
01011         <<"\n\t\t\t  Cluster    Left L = " << cluster->getChargeLRFirstNeighbour().first
01012         <<"\n\t\t\t  Cluster   Right R = " << cluster->getChargeLRFirstNeighbour().second
01013         <<"\n\t\t\t  RawDigi Central C = " << chargeCentral
01014         <<"\n\t\t\t  RawDigi    Left L = " << chargeLeftRight.first
01015         <<"\n\t\t\t  RawDigi   Right R = " << chargeLeftRight.second
01016         <<"\n\t\t\t     Max = " << cluster->getMaxCharge()
01017         <<"\n\t\t\t     Pos = " << cluster->getMaxPosition()
01018         <<"\n\t\t\t     1st = " << cluster->getFirstStrip()
01019         <<"\n\t\t\t Symmetric Eta = " << symmetricEta
01020         <<"\n\t\t\t CC Estimator  = " << ccEstimator
01021         << std::endl;
01022       for (std::vector<uint8_t>::const_iterator it=cluster->getStripAmplitudes().begin();it<cluster->getStripAmplitudes().end();++it) {
01023         LogTrace("SiStripMonitorTrack")    
01024           <<"\t\t\t       " << (short)(*it) << std::endl;
01025       }
01026       //
01027       
01028       // fill monitor elements
01029       fillME(iLayerME->second.ClusterSymmEtaCC , symmetricEta);
01030       fillTrend(iLayerME->second.ClusterSymmEtaCCTrend, symmetricEta);
01031       // Histograms booked and filled only if Charge Coupling Analysis is selected
01032       if(CCAnalysis_On_) {
01033         fillME(iLayerME->second.ClusterWidthCC, cluster->getWidth() );
01034         fillME(iLayerME->second.ClusterEstimatorCC , ccEstimator );
01035       }
01036       //
01037       
01038     } // perpendicular track
01039   }
01040 }

void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3,
float  value4 
) [inline, private]

Definition at line 87 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

00087 {if (ME!=0)ME->Fill(value1,value2,value3,value4);}

void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3 
) [inline, private]

Definition at line 86 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

00086 {if (ME!=0)ME->Fill(value1,value2,value3);}

void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1,
float  value2 
) [inline, private]

Definition at line 85 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

00085 {if (ME!=0)ME->Fill(value1,value2);}

void SiStripMonitorTrack::fillME ( MonitorElement ME,
float  value1 
) [inline, private]

Definition at line 84 of file SiStripMonitorTrack.h.

References MonitorElement::Fill().

Referenced by analyze(), fillCapacitiveCouplingMEs(), fillModMEs(), and fillTrendMEs().

00084 {if (ME!=0)ME->Fill(value1);}

void SiStripMonitorTrack::fillModMEs ( SiStripClusterInfo cluster,
TString  name,
float  cos 
) [private]

Definition at line 920 of file SiStripMonitorTrack.cc.

References conf_, fillME(), SiStripClusterInfo::getCharge(), SiStripClusterInfo::getFirstStrip(), SiStripClusterInfo::getMaxCharge(), SiStripClusterInfo::getMaxPosition(), edm::ParameterSet::getParameter(), SiStripClusterInfo::getPosition(), SiStripClusterInfo::getSignalOverNoiseRescaledByGain(), SiStripClusterInfo::getStripAmplitudes(), SiStripClusterInfo::getWidth(), i, int, it, and ModMEsMap.

Referenced by clusterInfos().

00921 {
00922   std::map<TString, ModMEs>::iterator iModME  = ModMEsMap.find(name);
00923   if(iModME!=ModMEsMap.end()){
00924     fillME(iModME->second.ClusterStoN  ,cluster->getSignalOverNoiseRescaledByGain());
00925     fillME(iModME->second.ClusterStoNCorr ,cluster->getSignalOverNoiseRescaledByGain()*cos);
00926     fillME(iModME->second.ClusterCharge,cluster->getCharge());
00927     fillME(iModME->second.ClusterChargeCorr,cluster->getCharge()*cos);
00928     fillME(iModME->second.ClusterWidth ,cluster->getWidth());
00929     fillME(iModME->second.ClusterPos   ,cluster->getPosition());
00930     
00931     //fill the PGV histo
00932     float PGVmax = cluster->getMaxCharge();
00933     int PGVposCounter = cluster->getFirstStrip() - cluster->getMaxPosition();
00934     for (int i= int(conf_.getParameter<edm::ParameterSet>("TProfileClusterPGV").getParameter<double>("xmin"));i<PGVposCounter;++i)
00935       fillME(iModME->second.ClusterPGV, i,0.);
00936     for (std::vector<uint8_t>::const_iterator it=cluster->getStripAmplitudes().begin();it<cluster->getStripAmplitudes().end();++it) {
00937       fillME(iModME->second.ClusterPGV, PGVposCounter++,(*it)/PGVmax);
00938     }
00939     for (int i= PGVposCounter;i<int(conf_.getParameter<edm::ParameterSet>("TProfileClusterPGV").getParameter<double>("xmax"));++i)
00940       fillME(iModME->second.ClusterPGV, i,0.);
00941     //end fill the PGV histo
00942   }
00943 }

void SiStripMonitorTrack::fillTrend ( MonitorElement ME,
float  value1 
) [private]

Definition at line 848 of file SiStripMonitorTrack.cc.

References conf_, python::tagInventory::entries, error, eventNb, MonitorElement::Fill(), firstEvent, MonitorElement::getAxisTitle(), MonitorElement::getBinContent(), MonitorElement::getBinEntries(), MonitorElement::getBinError(), MonitorElement::getEntries(), MonitorElement::getNbinsX(), edm::ParameterSet::getParameter(), int, btag::LeptonSelector::option(), funct::pow(), MonitorElement::setAxisTitle(), MonitorElement::setBinContent(), MonitorElement::setBinEntries(), MonitorElement::setBinError(), and MonitorElement::setEntries().

Referenced by analyze(), fillCapacitiveCouplingMEs(), and fillTrendMEs().

00849 {
00850   if(!me) return;
00851   //check the origin and check options
00852   int option = conf_.getParameter<edm::ParameterSet>("Trending").getParameter<int32_t>("UpdateMode");
00853   if(firstEvent==-1) firstEvent = eventNb;
00854   int CurrentStep = atoi(me->getAxisTitle(1).c_str()+8);
00855   int firstEventUsed = firstEvent;
00856   int presentOverflow = (int)me->getBinEntries(me->getNbinsX()+1);
00857   if(option==2) firstEventUsed += CurrentStep * int(me->getBinEntries(me->getNbinsX()+1));
00858   else if(option==3) firstEventUsed += CurrentStep * int(me->getBinEntries(me->getNbinsX()+1)) * me->getNbinsX();
00859   //fill
00860   me->Fill((eventNb-firstEventUsed)/CurrentStep,value);
00861   if(eventNb-firstEvent<1) return;
00862   // check if we reached the end
00863   if(presentOverflow == me->getBinEntries(me->getNbinsX()+1)) return;
00864   switch(option) {
00865   case 1:
00866     {
00867       // mode 1: rebin and change X scale
00868       int NbinsX = me->getNbinsX();
00869       float entries = 0.;
00870       float content = 0.;
00871       float error = 0.;
00872       int bin = 1;
00873       int totEntries = int(me->getEntries());
00874       for(;bin<=NbinsX/2;++bin) {
00875         content = (me->getBinContent(2*bin-1) + me->getBinContent(2*bin))/2.; 
00876         error   = pow((me->getBinError(2*bin-1)*me->getBinError(2*bin-1)) + (me->getBinError(2*bin)*me->getBinError(2*bin)),0.5)/2.; 
00877         entries = me->getBinEntries(2*bin-1) + me->getBinEntries(2*bin);
00878         me->setBinContent(bin,content*entries);
00879         me->setBinError(bin,error);
00880         me->setBinEntries(bin,entries);
00881       }
00882       for(;bin<=NbinsX+1;++bin) {
00883         me->setBinContent(bin,0);
00884         me->setBinError(bin,0);
00885         me->setBinEntries(bin,0); 
00886       }
00887       me->setEntries(totEntries);
00888       char buffer[256];
00889       sprintf(buffer,"EventId/%d",CurrentStep*2);
00890       me->setAxisTitle(std::string(buffer),1);
00891       break;
00892     }
00893   case 2:
00894     {
00895       // mode 2: slide
00896       int bin=1;
00897       int NbinsX = me->getNbinsX();
00898       for(;bin<=NbinsX;++bin) {
00899         me->setBinContent(bin,me->getBinContent(bin+1)*me->getBinEntries(bin+1));
00900         me->setBinError(bin,me->getBinError(bin+1));
00901         me->setBinEntries(bin,me->getBinEntries(bin+1));
00902       }
00903       break;
00904     }
00905   case 3:
00906     {
00907       // mode 3: reset
00908       int NbinsX = me->getNbinsX();
00909       for(int bin=0;bin<=NbinsX;++bin) {
00910         me->setBinContent(bin,0);
00911         me->setBinError(bin,0);
00912         me->setBinEntries(bin,0); 
00913       }
00914       break;
00915     }
00916   }
00917 }

void SiStripMonitorTrack::fillTrendMEs ( SiStripClusterInfo cluster,
std::string  name,
float  cos,
std::string  flag 
) [private]

Definition at line 946 of file SiStripMonitorTrack.cc.

References fillME(), fillTrend(), SiStripClusterInfo::getCharge(), SiStripClusterInfo::getNoiseRescaledByGain(), SiStripClusterInfo::getPosition(), SiStripClusterInfo::getSignalOverNoiseRescaledByGain(), SiStripClusterInfo::getWidth(), and LayerMEsMap.

Referenced by clusterInfos().

00947 { 
00948   std::map<TString, LayerMEs>::iterator iLayerME  = LayerMEsMap.find(name);
00949   if(iLayerME!=LayerMEsMap.end()){
00950     if(flag=="OnTrack"){
00951       fillME(iLayerME->second.ClusterStoNCorr,(cluster->getSignalOverNoiseRescaledByGain())*cos);
00952       fillTrend(iLayerME->second.ClusterStoNCorrTrend,(cluster->getSignalOverNoiseRescaledByGain())*cos);
00953       fillME(iLayerME->second.ClusterChargeCorr,cluster->getCharge()*cos);
00954       fillTrend(iLayerME->second.ClusterChargeCorrTrend,cluster->getCharge()*cos);
00955     }
00956     fillME(iLayerME->second.ClusterStoN  ,cluster->getSignalOverNoiseRescaledByGain());
00957     fillTrend(iLayerME->second.ClusterStoNTrend,cluster->getSignalOverNoiseRescaledByGain());
00958     fillME(iLayerME->second.ClusterCharge,cluster->getCharge());
00959     fillTrend(iLayerME->second.ClusterChargeTrend,cluster->getCharge());
00960     fillME(iLayerME->second.ClusterNoise ,cluster->getNoiseRescaledByGain());
00961     fillTrend(iLayerME->second.ClusterNoiseTrend,cluster->getNoiseRescaledByGain());
00962     fillME(iLayerME->second.ClusterWidth ,cluster->getWidth());
00963     fillTrend(iLayerME->second.ClusterWidthTrend,cluster->getWidth());
00964     fillME(iLayerME->second.ClusterPos   ,cluster->getPosition());
00965   }
00966 }

void SiStripMonitorTrack::RecHitInfo ( const SiStripRecHit2D tkrecHit,
LocalVector  LV,
reco::TrackRef  track_ref,
const edm::EventSetup es 
) [private]

Definition at line 692 of file SiStripMonitorTrack.cc.

References SiStripRecHit2D::cluster(), clusterInfos(), countOn, lat::endl(), find(), TrackingRecHit::geographicalId(), TrackingRecHit::isValid(), BaseSiTrackerRecHit2DLocalPos::localPosition(), LogTrace, ModulesToBeExcluded_, NULL, DetId::rawId(), tkgeom, vPSiStripCluster, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by trackStudy().

00692                                                                                                                                      {
00693     
00694     if(!tkrecHit->isValid()){
00695       LogTrace("SiStripMonitorTrack") <<"\t\t Invalid Hit " << std::endl;
00696       return;  
00697     }
00698     
00699     const uint32_t& detid = tkrecHit->geographicalId().rawId();
00700     if (find(ModulesToBeExcluded_.begin(),ModulesToBeExcluded_.end(),detid)!=ModulesToBeExcluded_.end()){
00701       LogTrace("SiStripMonitorTrack") << "Modules Excluded" << std::endl;
00702       return;
00703     }
00704     
00705     LogTrace("SiStripMonitorTrack")
00706       <<"\n\t\tRecHit on det "<<tkrecHit->geographicalId().rawId()
00707       <<"\n\t\tRecHit in LP "<<tkrecHit->localPosition()
00708       <<"\n\t\tRecHit in GP "<<tkgeom->idToDet(tkrecHit->geographicalId())->surface().toGlobal(tkrecHit->localPosition()) 
00709       <<"\n\t\tRecHit trackLocal vector "<<LV.x() << " " << LV.y() << " " << LV.z() <<std::endl; 
00710     
00711     //Get SiStripCluster from SiStripRecHit
00712     if ( tkrecHit != NULL ){
00713       LogTrace("SiStripMonitorTrack") << "GOOD hit" << std::endl;
00714       const SiStripCluster* SiStripCluster_ = &*(tkrecHit->cluster());
00715       SiStripClusterInfo* SiStripClusterInfo_ = new SiStripClusterInfo(detid,*SiStripCluster_,es);
00716             
00717       if ( clusterInfos(SiStripClusterInfo_,detid,"OnTrack", LV ) ) {
00718         vPSiStripCluster.push_back(SiStripCluster_);
00719         countOn++;
00720       }
00721       delete SiStripClusterInfo_; 
00722       //}
00723     }else{
00724      edm::LogError("SiStripMonitorTrack") << "NULL hit" << std::endl;
00725     }     
00726   }

float SiStripMonitorTrack::SymEta ( float  clusterCentralCharge,
float  clusterLeftCharge,
float  clusterRightCharge 
) [private]

Definition at line 1044 of file SiStripMonitorTrack.cc.

Referenced by fillCapacitiveCouplingMEs().

01044                                                                                                                {
01045   float symeta = ( clusterLeftCharge + clusterRightCharge )/( 2 * clusterCentralCharge );
01046   return symeta;
01047 }

void SiStripMonitorTrack::trackStudy ( const edm::EventSetup es  )  [private]

Definition at line 595 of file SiStripMonitorTrack.cc.

References lat::endl(), TrackingRecHit::geographicalId(), i, it, TrajectoryStateOnSurface::localMomentum(), LogTrace, PV3DBase< T, PVType, FrameType >::mag(), Matched, GluedGeomDet::monoDet(), SiStripMatchedRecHit2D::monoHit(), ProjectedSiStripRecHit2D::originalHit(), Projected, DetId::rawId(), RecHitInfo(), Single, ss, GluedGeomDet::stereoDet(), SiStripMatchedRecHit2D::stereoHit(), TItkAssociatorCollection, tkgeom, GeomDet::toGlobal(), GeomDet::toLocal(), trackCollection, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by analyze().

00596 {
00597 
00598   const reco::TrackCollection tC = *(trackCollection.product());
00599   int i=0;
00600   std::vector<TrajectoryMeasurement> measurements;
00601   for(TrajTrackAssociationCollection::const_iterator it =  TItkAssociatorCollection->begin();it !=  TItkAssociatorCollection->end(); ++it){
00602     const edm::Ref<std::vector<Trajectory> > traj_iterator = it->key;  
00603     // Trajectory Map, extract Trajectory for this track
00604     reco::TrackRef trackref = it->val;
00605     LogTrace("SiStripMonitorTrack")
00606       << "Track number "<< i+1 
00607       << "\n\tmomentum: " << trackref->momentum()
00608       << "\n\tPT: " << trackref->pt()
00609       << "\n\tvertex: " << trackref->vertex()
00610       << "\n\timpact parameter: " << trackref->d0()
00611       << "\n\tcharge: " << trackref->charge()
00612       << "\n\tnormalizedChi2: " << trackref->normalizedChi2() 
00613       <<"\n\tFrom EXTRA : "
00614       <<"\n\t\touter PT "<< trackref->outerPt()<<std::endl;
00615     i++;
00616 
00617     measurements =traj_iterator->measurements();
00618     std::vector<TrajectoryMeasurement>::iterator traj_mes_iterator;
00619     int nhit=0;
00620     for(traj_mes_iterator=measurements.begin();traj_mes_iterator!=measurements.end();traj_mes_iterator++){//loop on measurements
00621       //trajectory local direction and position on detector
00622       LocalPoint  stateposition;
00623       LocalVector statedirection;
00624       
00625       TrajectoryStateOnSurface  updatedtsos=traj_mes_iterator->updatedState();
00626       ConstRecHitPointer ttrh=traj_mes_iterator->recHit();
00627       if (!ttrh->isValid()) {continue;}
00628       
00629       std::stringstream ss;
00630       
00631       nhit++;
00632       
00633       const ProjectedSiStripRecHit2D* phit=dynamic_cast<const ProjectedSiStripRecHit2D*>( ttrh->hit() );
00634       const SiStripMatchedRecHit2D* matchedhit=dynamic_cast<const SiStripMatchedRecHit2D*>( ttrh->hit() );
00635       const SiStripRecHit2D* hit=dynamic_cast<const SiStripRecHit2D*>( ttrh->hit() );   
00636       
00637       RecHitType type=Single;
00638 
00639       if(matchedhit){
00640         LogTrace("SiStripMonitorTrack")<<"\nMatched recHit found"<< std::endl;
00641         type=Matched;
00642         
00643         GluedGeomDet * gdet=(GluedGeomDet *)tkgeom->idToDet(matchedhit->geographicalId());
00644         GlobalVector gtrkdirup=gdet->toGlobal(updatedtsos.localMomentum());         
00645         //mono side
00646         const GeomDetUnit * monodet=gdet->monoDet();
00647         statedirection=monodet->toLocal(gtrkdirup);
00648         if(statedirection.mag() != 0)     RecHitInfo(matchedhit->monoHit(),statedirection,trackref,es);
00649         //stereo side
00650         const GeomDetUnit * stereodet=gdet->stereoDet();
00651         statedirection=stereodet->toLocal(gtrkdirup);
00652         if(statedirection.mag() != 0)     RecHitInfo(matchedhit->stereoHit(),statedirection,trackref,es);
00653         ss<<"\nLocalMomentum (stereo): " <<  statedirection;
00654       }
00655       else if(phit){
00656         LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found"<< std::endl;
00657         type=Projected;
00658         GluedGeomDet * gdet=(GluedGeomDet *)tkgeom->idToDet(phit->geographicalId());
00659         
00660         GlobalVector gtrkdirup=gdet->toGlobal(updatedtsos.localMomentum());
00661         const SiStripRecHit2D&  originalhit=phit->originalHit();
00662         const GeomDetUnit * det;
00663         if(!StripSubdetector(originalhit.geographicalId().rawId()).stereo()){
00664           //mono side
00665           LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found  MONO"<< std::endl;
00666           det=gdet->monoDet();
00667           statedirection=det->toLocal(gtrkdirup);
00668           if(statedirection.mag() != 0) RecHitInfo(&(phit->originalHit()),statedirection,trackref,es);
00669         }
00670         else{
00671           LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found STEREO"<< std::endl;
00672           //stereo side
00673           det=gdet->stereoDet();
00674           statedirection=det->toLocal(gtrkdirup);
00675           if(statedirection.mag() != 0) RecHitInfo(&(phit->originalHit()),statedirection,trackref,es);
00676         }
00677       }else {
00678         if(hit!=0){
00679           ss<<"\nSingle recHit found"<< std::endl;        
00680           statedirection=updatedtsos.localMomentum();
00681           if(statedirection.mag() != 0) RecHitInfo(hit,statedirection,trackref,es);
00682         }
00683       }
00684       ss <<"LocalMomentum: "<<statedirection
00685          << "\nLocal x-z plane angle: "<<atan2(statedirection.x(),statedirection.z());        
00686       LogTrace("SiStripMonitorTrack") <<ss.str() << std::endl;
00687     }
00688     
00689   }
00690 }


Member Data Documentation

bool SiStripMonitorTrack::CCAnalysis_On_ [private]

Definition at line 182 of file SiStripMonitorTrack.h.

Referenced by bookSubDetMEs(), bookTrendMEs(), and fillCapacitiveCouplingMEs().

edm::InputTag SiStripMonitorTrack::Cluster_src_ [private]

Definition at line 176 of file SiStripMonitorTrack.h.

Referenced by analyze().

edm::ParameterSet SiStripMonitorTrack::conf_ [private]

Definition at line 93 of file SiStripMonitorTrack.h.

Referenced by analyze(), book(), bookME1D(), bookME2D(), bookME3D(), bookMEProfile(), bookMETrend(), clusterInfos(), endJob(), fillModMEs(), and fillTrend().

int SiStripMonitorTrack::countAll [private]

Definition at line 195 of file SiStripMonitorTrack.h.

int SiStripMonitorTrack::countOff [private]

Definition at line 195 of file SiStripMonitorTrack.h.

Referenced by AllClusters(), and analyze().

int SiStripMonitorTrack::countOn [private]

Definition at line 195 of file SiStripMonitorTrack.h.

Referenced by analyze(), and RecHitInfo().

DQMStore* SiStripMonitorTrack::dbe [private]

Definition at line 92 of file SiStripMonitorTrack.h.

Referenced by book(), bookME1D(), bookME2D(), bookME3D(), bookMEProfile(), bookMETrend(), bookModMEs(), bookTrendMEs(), and endJob().

std::map<std::pair<std::string,int32_t>,bool> SiStripMonitorTrack::DetectedLayers [private]

Definition at line 188 of file SiStripMonitorTrack.h.

Referenced by book().

edm::Handle< edmNew::DetSetVector<SiStripCluster> > SiStripMonitorTrack::dsv_SiStripCluster [private]

Definition at line 166 of file SiStripMonitorTrack.h.

Referenced by AllClusters(), analyze(), and fillCapacitiveCouplingMEs().

edm::Handle< edm::DetSetVector<SiStripRawDigi> > SiStripMonitorTrack::dsv_SiStripRawDigi [private]

Definition at line 165 of file SiStripMonitorTrack.h.

Referenced by analyze(), and fillCapacitiveCouplingMEs().

int SiStripMonitorTrack::eventNb [private]

Definition at line 193 of file SiStripMonitorTrack.h.

Referenced by analyze(), and fillTrend().

int SiStripMonitorTrack::firstEvent [private]

Definition at line 194 of file SiStripMonitorTrack.h.

Referenced by fillTrend().

bool SiStripMonitorTrack::flag_ring [private]

Definition at line 192 of file SiStripMonitorTrack.h.

Referenced by book(), bookTrendMEs(), and clusterInfos().

SiStripFolderOrganizer SiStripMonitorTrack::folder_organizer [private]

Definition at line 189 of file SiStripMonitorTrack.h.

Referenced by book(), and clusterInfos().

std::string SiStripMonitorTrack::histname [private]

Definition at line 94 of file SiStripMonitorTrack.h.

std::map<TString, LayerMEs> SiStripMonitorTrack::LayerMEsMap [private]

Definition at line 161 of file SiStripMonitorTrack.h.

Referenced by analyze(), bookSubDetMEs(), bookTrendMEs(), fillCapacitiveCouplingMEs(), and fillTrendMEs().

LocalVector SiStripMonitorTrack::LV [private]

Definition at line 96 of file SiStripMonitorTrack.h.

Referenced by AllClusters().

std::map<TString, MonitorElement*> SiStripMonitorTrack::MEMap [private]

Definition at line 162 of file SiStripMonitorTrack.h.

Referenced by analyze(), and book().

bool SiStripMonitorTrack::Mod_On_ [private]

Definition at line 178 of file SiStripMonitorTrack.h.

Referenced by book(), and clusterInfos().

std::map<TString, ModMEs> SiStripMonitorTrack::ModMEsMap [private]

Definition at line 160 of file SiStripMonitorTrack.h.

Referenced by bookModMEs(), and fillModMEs().

std::vector<uint32_t> SiStripMonitorTrack::ModulesToBeExcluded_ [private]

Definition at line 186 of file SiStripMonitorTrack.h.

Referenced by AllClusters(), and RecHitInfo().

TString SiStripMonitorTrack::name [private]

Definition at line 95 of file SiStripMonitorTrack.h.

Referenced by analyze(), book(), and clusterInfos().

int SiStripMonitorTrack::NClus[4][3] [private]

Definition at line 195 of file SiStripMonitorTrack.h.

Referenced by analyze(), clusterInfos(), and SiStripMonitorTrack().

int SiStripMonitorTrack::off_Flag [private]

Definition at line 185 of file SiStripMonitorTrack.h.

Referenced by analyze(), book(), and SiStripMonitorTrack().

bool SiStripMonitorTrack::OffHisto_On_ [private]

Definition at line 180 of file SiStripMonitorTrack.h.

Referenced by analyze(), and SiStripMonitorTrack().

edm::ParameterSet SiStripMonitorTrack::Parameters [private]

Definition at line 175 of file SiStripMonitorTrack.h.

Referenced by bookME1D(), bookME2D(), bookME3D(), bookMEProfile(), and bookMETrend().

bool SiStripMonitorTrack::RawDigis_On_ [private]

Definition at line 181 of file SiStripMonitorTrack.h.

Referenced by analyze(), and fillCapacitiveCouplingMEs().

bool SiStripMonitorTrack::ring_flag [private]

Definition at line 183 of file SiStripMonitorTrack.h.

int SiStripMonitorTrack::runNb [private]

Definition at line 193 of file SiStripMonitorTrack.h.

Referenced by analyze().

edm::ESHandle<SiStripDetCabling> SiStripMonitorTrack::SiStripDetCabling_ [private]

Definition at line 173 of file SiStripMonitorTrack.h.

Referenced by beginRun(), book(), bookModMEs(), and bookTrendMEs().

edm::Handle<TrajTrackAssociationCollection> SiStripMonitorTrack::TItkAssociatorCollection [private]

Definition at line 170 of file SiStripMonitorTrack.h.

Referenced by analyze(), and trackStudy().

edm::ESHandle<TrackerGeometry> SiStripMonitorTrack::tkgeom [private]

Definition at line 172 of file SiStripMonitorTrack.h.

Referenced by beginRun(), RecHitInfo(), and trackStudy().

bool SiStripMonitorTrack::trackAssociatorCollection_in_EventTree [private]

Definition at line 191 of file SiStripMonitorTrack.h.

Referenced by analyze().

edm::Handle<reco::TrackCollection > SiStripMonitorTrack::trackCollection [private]

Definition at line 169 of file SiStripMonitorTrack.h.

Referenced by analyze(), and trackStudy().

bool SiStripMonitorTrack::tracksCollection_in_EventTree [private]

Definition at line 190 of file SiStripMonitorTrack.h.

Referenced by analyze().

edm::Handle<std::vector<Trajectory> > SiStripMonitorTrack::TrajectoryCollection [private]

Definition at line 168 of file SiStripMonitorTrack.h.

Referenced by analyze().

bool SiStripMonitorTrack::Trend_On_ [private]

Definition at line 179 of file SiStripMonitorTrack.h.

Referenced by analyze(), book(), bookSubDetMEs(), and bookTrendMEs().

std::vector<const SiStripCluster*> SiStripMonitorTrack::vPSiStripCluster [private]

Definition at line 187 of file SiStripMonitorTrack.h.

Referenced by AllClusters(), analyze(), and RecHitInfo().


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