CMS 3D CMS Logo

Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes

AlignmentMonitorBase Class Reference

#include <Alignment/CommonAlignmentMonitor/interface/AlignmentMonitorBase.h>

Inheritance diagram for AlignmentMonitorBase:
AlignmentMonitorGeneric AlignmentMonitorMuonResiduals AlignmentMonitorMuonSystemMap1D AlignmentMonitorMuonVsCurvature AlignmentMonitorSegmentDifferences AlignmentMonitorSurvey AlignmentMonitorTemplate AlignmentMonitorTracksFromTrajectories

List of all members.

Public Types

typedef std::pair< const
Trajectory *, const
reco::Track * > 
ConstTrajTrackPair
typedef std::vector
< ConstTrajTrackPair
ConstTrajTrackPairCollection

Public Member Functions

virtual void afterAlignment (const edm::EventSetup &iSetup)
 AlignmentMonitorBase (const edm::ParameterSet &cfg, std::string name)
 Constructor.
void beginOfJob (AlignableTracker *pTracker, AlignableMuon *pMuon, AlignmentParameterStore *pStore)
 Called at beginning of job: don't reimplement.
virtual void book ()=0
 Book or retrieve histograms; MUST be reimplemented.
void duringLoop (const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks)
 Called for each event: don't reimplement.
void endOfJob ()
 Called at end of processing: don't implement.
void endOfLoop (const edm::EventSetup &iSetup)
 Called at end of loop: don't reimplement.
virtual void event (const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks)
 Called for each event (by "run()"): may be reimplemented.
void startingNewLoop ()
 Called at beginning of loop: don't reimplement.
virtual ~AlignmentMonitorBase ()
 Destructor.

Protected Member Functions

TH1F * book1D (std::string dir, std::string name, std::string title, int nchX, double lowX, double highX)
TH2F * book2D (std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
TProfile * bookProfile (std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY=1, double lowY=0., double highY=0., const char *option="s")
TFileDirectorydirectory (std::string dir)
int iteration ()
AlignableMuonpMuon ()
AlignableNavigatorpNavigator ()
AlignmentParameterStorepStore ()
AlignableTrackerpTracker ()

Private Member Functions

 AlignmentMonitorBase (const AlignmentMonitorBase &)
const AlignmentMonitorBaseoperator= (const AlignmentMonitorBase &)

Private Attributes

std::map< std::vector
< std::string >
, TFileDirectory * > 
m_baseDirMap
int m_iteration
std::map< std::vector
< std::string >
, TFileDirectory * > 
m_iterDirMap
AlignableMuonmp_muon
AlignableNavigatormp_navigator
AlignmentParameterStoremp_store
AlignableTrackermp_tracker

Detailed Description

Description: <one line="" class="" summary>="">

Usage: <usage>

Definition at line 42 of file AlignmentMonitorBase.h.


Member Typedef Documentation

Definition at line 44 of file AlignmentMonitorBase.h.

Definition at line 45 of file AlignmentMonitorBase.h.


Constructor & Destructor Documentation

AlignmentMonitorBase::AlignmentMonitorBase ( const edm::ParameterSet cfg,
std::string  name 
)

Constructor.

Definition at line 40 of file AlignmentMonitorBase.cc.

References m_baseDirMap.

   : m_iteration(0), mp_tracker(0), mp_muon(0), mp_store(0) {
   edm::Service<TFileService> tFileService;
   m_baseDirMap[std::vector<std::string>()] = new TFileDirectory(tFileService->mkdir(name));
}
virtual AlignmentMonitorBase::~AlignmentMonitorBase ( ) [inline, virtual]

Destructor.

Definition at line 51 of file AlignmentMonitorBase.h.

{}
AlignmentMonitorBase::AlignmentMonitorBase ( const AlignmentMonitorBase ) [private]

Member Function Documentation

virtual void AlignmentMonitorBase::afterAlignment ( const edm::EventSetup iSetup) [inline, virtual]
void AlignmentMonitorBase::beginOfJob ( AlignableTracker pTracker,
AlignableMuon pMuon,
AlignmentParameterStore pStore 
)

Called at beginning of job: don't reimplement.

Definition at line 62 of file AlignmentMonitorBase.cc.

References mp_muon, mp_navigator, mp_store, mp_tracker, pMuon(), pStore(), and pTracker().

                                                                                                                       {
   mp_tracker = pTracker;
   mp_muon = pMuon;
   mp_store = pStore;

   if (!pMuon)          mp_navigator = new AlignableNavigator(pTracker);
   else if (!pTracker)  mp_navigator = new AlignableNavigator(pMuon);
   else                 mp_navigator = new AlignableNavigator(pTracker, pMuon);
}
virtual void AlignmentMonitorBase::book ( ) [pure virtual]
TH1F * AlignmentMonitorBase::book1D ( std::string  dir,
std::string  name,
std::string  title,
int  nchX,
double  lowX,
double  highX 
) [protected]

Use this every time you book a histogram (so that AlignmentMonitorBase can find your histograms in a collector (parallel-processing) job)

Definition at line 132 of file AlignmentMonitorBase.cc.

References directory(), and TFileDirectory::make().

Referenced by AlignmentMonitorMuonResiduals::book(), AlignmentMonitorGeneric::book(), AlignmentMonitorTemplate::book(), AlignmentMonitorSegmentDifferences::book(), AlignmentMonitorTracksFromTrajectories::book(), AlignmentMonitorMuonVsCurvature::book(), and MuonSystemMapPlot1D::MuonSystemMapPlot1D().

                                                                                                                      {
   return directory(dir)->make<TH1F>(name.c_str(), title.c_str(), nchX, lowX, highX);
}
TH2F * AlignmentMonitorBase::book2D ( std::string  dir,
std::string  name,
std::string  title,
int  nchX,
double  lowX,
double  highX,
int  nchY,
double  lowY,
double  highY 
) [protected]

Definition at line 145 of file AlignmentMonitorBase.cc.

References directory(), and TFileDirectory::make().

Referenced by AlignmentMonitorMuonVsCurvature::book(), and MuonSystemMapPlot1D::MuonSystemMapPlot1D().

                                                                                                                                                           {
   return directory(dir)->make<TH2F>(name.c_str(), title.c_str(), nchX, lowX, highX, nchY, lowY, highY);
}
TProfile * AlignmentMonitorBase::bookProfile ( std::string  dir,
std::string  name,
std::string  title,
int  nchX,
double  lowX,
double  highX,
int  nchY = 1,
double  lowY = 0.,
double  highY = 0.,
const char *  option = "s" 
) [protected]

Definition at line 136 of file AlignmentMonitorBase.cc.

References directory(), and TFileDirectory::make().

Referenced by AlignmentMonitorSegmentDifferences::book(), AlignmentMonitorMuonVsCurvature::book(), and MuonSystemMapPlot1D::MuonSystemMapPlot1D().

                                                                                                                                                                                        {
   if (lowY == highY) {
      return directory(dir)->make<TProfile>(name.c_str(), title.c_str(), nchX, lowX, highX, option);
   }
   else {
      return directory(dir)->make<TProfile>(name.c_str(), title.c_str(), nchX, lowX, highX, lowY, highY, option);
   }
}
TFileDirectory * AlignmentMonitorBase::directory ( std::string  dir) [protected]

Definition at line 98 of file AlignmentMonitorBase.cc.

References i, prof2calltree::last, m_baseDirMap, m_iterDirMap, TFileDirectory::mkdir(), and pos.

Referenced by AlignmentMonitorMuonResiduals::book(), AlignmentMonitorSurvey::book(), book1D(), book2D(), and bookProfile().

                                                             {
   std::string::size_type lastPos = dir.find_first_not_of("/", 0);
   std::string::size_type pos = dir.find_first_of("/", lastPos);
   std::vector<std::string> dirs;

   bool isIter = false;
   if (dir.substr(lastPos, pos - lastPos) == std::string("iterN")) {
      isIter = true;
      lastPos = dir.find_first_not_of("/", pos);
      pos = dir.find_first_of("/", lastPos);
   }

   while (std::string::npos != pos  ||  std::string::npos != lastPos) {
      dirs.push_back(dir.substr(lastPos, pos - lastPos));
      lastPos = dir.find_first_not_of("/", pos);
      pos = dir.find_first_of("/", lastPos);
   }

   std::map<std::vector<std::string>, TFileDirectory*> *theMap;
   if (isIter) theMap = &m_iterDirMap;
   else theMap = &m_baseDirMap;

   std::vector<std::string> partial;
   TFileDirectory *last = (*theMap)[partial];
   for (unsigned int i = 0;  i < dirs.size();  i++) {
      partial.push_back(dirs[i]);
      if (theMap->find(partial) == theMap->end()) {
         (*theMap)[partial] = new TFileDirectory(last->mkdir(dirs[i]));
      }
      last = (*theMap)[partial];
   }
   return last;
}
void AlignmentMonitorBase::duringLoop ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const ConstTrajTrackPairCollection iTrajTracks 
)

Called for each event: don't reimplement.

Definition at line 87 of file AlignmentMonitorBase.cc.

References event().

                                                                                                                                          {
   event(iEvent, iSetup, iTrajTracks);
}
void AlignmentMonitorBase::endOfJob ( )

Called at end of processing: don't implement.

Definition at line 95 of file AlignmentMonitorBase.cc.

                                    {
}
void AlignmentMonitorBase::endOfLoop ( const edm::EventSetup iSetup)

Called at end of loop: don't reimplement.

Definition at line 91 of file AlignmentMonitorBase.cc.

References afterAlignment().

                                                                {
   afterAlignment(iSetup);
}
virtual void AlignmentMonitorBase::event ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const ConstTrajTrackPairCollection iTrajTracks 
) [inline, virtual]
int AlignmentMonitorBase::iteration ( ) [inline, protected]
const AlignmentMonitorBase& AlignmentMonitorBase::operator= ( const AlignmentMonitorBase ) [private]
AlignableMuon* AlignmentMonitorBase::pMuon ( ) [inline, protected]
AlignableNavigator* AlignmentMonitorBase::pNavigator ( ) [inline, protected]
AlignmentParameterStore* AlignmentMonitorBase::pStore ( ) [inline, protected]
AlignableTracker* AlignmentMonitorBase::pTracker ( ) [inline, protected]

Definition at line 90 of file AlignmentMonitorBase.h.

References mp_tracker.

Referenced by beginOfJob().

{ return mp_tracker; };
void AlignmentMonitorBase::startingNewLoop ( )

Called at beginning of loop: don't reimplement.

Definition at line 72 of file AlignmentMonitorBase.cc.

References book(), TrackerOfflineValidation_Dqm_cff::dirName, i, iteration(), m_baseDirMap, m_iteration, m_iterDirMap, and Association::map.

                                           {
   m_iteration++;

   for (std::map<std::vector<std::string>, TFileDirectory*>::const_iterator i = m_iterDirMap.begin();  i != m_iterDirMap.end();  ++i) {
      delete i->second;
   }
   m_iterDirMap.clear();

   std::ostringstream dirName;
   dirName << "iter" << iteration();
   m_iterDirMap[std::vector<std::string>()] = new TFileDirectory(m_baseDirMap[std::vector<std::string>()]->mkdir(dirName.str()));

   book();
}

Member Data Documentation

std::map<std::vector<std::string>, TFileDirectory*> AlignmentMonitorBase::m_baseDirMap [private]

Definition at line 107 of file AlignmentMonitorBase.h.

Referenced by AlignmentMonitorBase(), directory(), and startingNewLoop().

Definition at line 101 of file AlignmentMonitorBase.h.

Referenced by iteration(), and startingNewLoop().

std::map<std::vector<std::string>, TFileDirectory*> AlignmentMonitorBase::m_iterDirMap [private]

Definition at line 107 of file AlignmentMonitorBase.h.

Referenced by directory(), and startingNewLoop().

Definition at line 103 of file AlignmentMonitorBase.h.

Referenced by beginOfJob(), and pMuon().

Definition at line 105 of file AlignmentMonitorBase.h.

Referenced by beginOfJob(), and pNavigator().

Definition at line 104 of file AlignmentMonitorBase.h.

Referenced by beginOfJob(), and pStore().

Definition at line 102 of file AlignmentMonitorBase.h.

Referenced by beginOfJob(), and pTracker().