00001
00002
00003
00004
00005
00006
00007
00008
00009 #include <string>
00010 #include <iostream>
00011 #include <sstream>
00012
00013
00014 #include "FWCore/Utilities/interface/Exception.h"
00015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00016
00017
00018
00019 #include "Alignment/TrackerAlignment/interface/TrackerScenarioBuilder.h"
00020 #include "Alignment/CommonAlignment/interface/Alignable.h"
00021
00022
00023
00024 TrackerScenarioBuilder::TrackerScenarioBuilder( Alignable* alignable )
00025 {
00026
00027 theAlignableTracker = dynamic_cast<AlignableTracker*>( alignable );
00028
00029 if ( !theAlignableTracker )
00030 throw cms::Exception("TypeMismatch") << "Argument is not an AlignableTracker";
00031
00032 }
00033
00034
00035
00036 void TrackerScenarioBuilder::applyScenario( const edm::ParameterSet& scenario )
00037 {
00038
00039
00040 theScenario = scenario;
00041 theModifierCounter = 0;
00042
00043
00044 if ( this->hasParameter_( "seed", theScenario ) )
00045 theModifier.setSeed( static_cast<long>(theScenario.getParameter<int>("seed")) );
00046 else
00047 throw cms::Exception("BadConfig") << "No generator seed defined!";
00048
00049
00050 if ( theScenario.getUntrackedParameter<bool>( "misalignTPB",true) &&
00051 !theScenario.getUntrackedParameter<bool>("fixTPB", false) )
00052 {
00053 std::vector<Alignable*> pixelBarrels = theAlignableTracker->pixelHalfBarrels();
00054 this->decodeMovements_( theScenario, pixelBarrels, "TPB" );
00055 }
00056
00057
00058 if ( theScenario.getUntrackedParameter<bool>( "misalignTPE",true) &&
00059 !theScenario.getUntrackedParameter<bool>("fixTPE", false) )
00060 {
00061 std::vector<Alignable*> pixelEndcaps = theAlignableTracker->pixelEndCaps();
00062 this->decodeMovements_( theScenario, pixelEndcaps, "TPE" );
00063 }
00064
00065
00066 if ( theScenario.getUntrackedParameter<bool>( "misalignTIB",true) &&
00067 !theScenario.getUntrackedParameter<bool>("fixTIB", false) )
00068 {
00069 std::vector<Alignable*> innerBarrels = theAlignableTracker->innerHalfBarrels();
00070 this->decodeMovements_( theScenario, innerBarrels, "TIB" );
00071 }
00072
00073
00074 if ( theScenario.getUntrackedParameter<bool>( "misalignTID",true) &&
00075 !theScenario.getUntrackedParameter<bool>("fixTID", false) )
00076 {
00077 std::vector<Alignable*> innerDisks = theAlignableTracker->TIDs();
00078 this->decodeMovements_( theScenario, innerDisks, "TID" );
00079 }
00080
00081
00082 if ( theScenario.getUntrackedParameter<bool>( "misalignTOB",true) &&
00083 !theScenario.getUntrackedParameter<bool>("fixTOB", false) )
00084 {
00085 std::vector<Alignable*> outerBarrels = theAlignableTracker->outerHalfBarrels();
00086 this->decodeMovements_( theScenario, outerBarrels, "TOB" );
00087 }
00088
00089
00090 if ( theScenario.getUntrackedParameter<bool>( "misalignTEC",true) &&
00091 !theScenario.getUntrackedParameter<bool>("fixTEC", false) )
00092 {
00093 std::vector<Alignable*> endcaps = theAlignableTracker->endCaps();
00094 this->decodeMovements_( theScenario, endcaps, "TEC" );
00095 }
00096
00097 edm::LogInfo("TrackerScenarioBuilder")
00098 << "Applied modifications to " << theModifierCounter << " alignables";
00099
00100 }
00101
00102