HadMuMonModule Class Reference

#include <HadMuMonModule.h>

Inheritance diagram for HadMuMonModule:

BeamMonBaseModule JobCModule List of all members.

Public Member Functions

 HadMuMonModule ()
virtual ~HadMuMonModule ()
virtual void BeginJob ()

Private Member Functions

void Fill (const RawBeamMonHeaderBlock &header, const RawBeamMonBlock &block)
void RangeFinder (StripHist *sh1, StripHist *sh2, StripHist *sh3, double &min, double &max)
void RangeFinder (StripHist *sh1, StripHist *sh2, double &min, double &max)

Private Attributes

std::map< std::string, StripHist * > fStripHist
std::map< std::string, TH2F * > fTH2F
std::map< std::string, TH1F * > fTH1F
const MomNavigatormom

Detailed Description

Definition at line 24 of file HadMuMonModule.h.


Constructor & Destructor Documentation

HadMuMonModule::HadMuMonModule (  ) 

Definition at line 51 of file HadMuMonModule.cxx.

References Munits::day, fStripHist, fTH1F, fTH2F, and StripHist::SetGraphYTitle().

00052 {
00053 
00054   StripHist *sh1  = new StripHist("Beam Intensity Alcove 1 (mV)","Muon Monitor Beam Intensity Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00055   StripHist *sh2  = new StripHist("Beam Intensity Alcove 2 (mV)","Muon Monitor Beam Intensity Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00056   StripHist *sh3  = new StripHist("Beam Intensity Alcove 3 (mV)","Muon Monitor Beam Intensity Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00057   StripHist *sh4  = new StripHist("Beam X Centroid Alcove 1","Beam X Centroid Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00058   StripHist *sh5  = new StripHist("Beam X Centroid Alcove 2","Beam X Centroid Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00059   StripHist *sh6  = new StripHist("Beam X Centroid Alcove 3","Beam X Centroid Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00060   StripHist *sh7  = new StripHist("Beam Y Centroid Alcove 1","Beam Y Centroid Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00061   StripHist *sh8  = new StripHist("Beam Y Centroid Alcove 2","Beam Y Centroid Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00062   StripHist *sh9  = new StripHist("Beam Y Centroid Alcove 3","Beam Y Centroid Red=Alcove 1 Blue=Alcove 2 Black=Alcove 3");
00063   StripHist *sh10 = new StripHist("Beam Intensity HadMon (mV)","Hadron Monitor Beam Intensity");
00064   StripHist *sh11 = new StripHist("Beam X HadMon","Hadron Monitor Beam Position Red=X Blue=Y");
00065   StripHist *sh12 = new StripHist("Beam Y HadMon","Hadron Monitor Beam Position Red=X Blue=Y");
00066   StripHist *sh13 = new StripHist("Beam X RMS HadMon","Hadron Monitor Beam RMS Red=X Blue=Y");
00067   StripHist *sh14 = new StripHist("Beam Y RMS HadMon","Hadron Monitor Beam RMS Red=X Blue=Y");
00068   
00069   TH2F *MuonMonitor1  = new TH2F("MuonMonitor1","Alcove 1 Muon Monitor Intensity",9,-45,45,9,-45,45);
00070   TH2F *MuonMonitor2  = new TH2F("MuonMonitor2","Alcove 2 Muon Monitor Intensity",9,-45,45,9,-45,45);
00071   TH2F *MuonMonitor3  = new TH2F("MuonMonitor3","Alcove 3 Muon Monitor Intensity",9,-45,45,9,-45,45);
00072   TH2F *HadronMonitor = new TH2F("HadronMonitor","Hadron Monitor Intensity",7,-15.75,15.75,7,-15.75,15.75);
00073 
00074   TH1F *HadronMonitorX = new TH1F("HadronMonitorX","Hadron Monitor Intensity in X Position",7,-15.75,15.75);
00075   TH1F *HadronMonitorY = new TH1F("HadronMonitorY","Hadron Monitor Intensity in Y Position",7,-15.75,15.75);
00076   
00077   sh1  -> SetLineColor(2);
00078   sh2  -> SetLineColor(4);
00079   sh4  -> SetLineColor(2);
00080   sh5  -> SetLineColor(4);
00081   sh7  -> SetLineColor(2);
00082   sh8  -> SetLineColor(4);
00083   sh11 -> SetLineColor(2);
00084   sh12 -> SetLineColor(4);
00085   sh13 -> SetLineColor(2);
00086   sh14 -> SetLineColor(4);
00087 
00088   sh1  -> SetStripRange(1*Munits::day);
00089   sh2  -> SetStripRange(1*Munits::day);
00090   sh3  -> SetStripRange(1*Munits::day);
00091   sh4  -> SetStripRange(1*Munits::day);
00092   sh5  -> SetStripRange(1*Munits::day);
00093   sh6  -> SetStripRange(1*Munits::day);
00094   sh7  -> SetStripRange(1*Munits::day);
00095   sh8  -> SetStripRange(1*Munits::day);
00096   sh9  -> SetStripRange(1*Munits::day);
00097   sh10 -> SetStripRange(1*Munits::day);
00098   sh11 -> SetStripRange(1*Munits::day);
00099   sh12 -> SetStripRange(1*Munits::day);
00100   sh13 -> SetStripRange(1*Munits::day);
00101   sh14 -> SetStripRange(1*Munits::day);
00102   
00103   HadronMonitorX->GetXaxis()->SetTitle("Horizontal Position (inches)");
00104   HadronMonitorY->GetXaxis()->SetTitle("Vertical Position (inches)");
00105 
00106   HadronMonitorX->GetYaxis()->SetTitle("Beam Intensity (mV)");
00107   HadronMonitorY->GetYaxis()->SetTitle("Beam Intensity (mV)");
00108 
00109   HadronMonitor->GetXaxis()->SetTitle("Horizontal Position (inches)");
00110   HadronMonitor->GetYaxis()->SetTitle("Vertical Position (inches)");
00111 
00112   MuonMonitor1->GetXaxis()->SetTitle("Horizontal Position (inches)");
00113   MuonMonitor1->GetYaxis()->SetTitle("Vertical Position (inches)");
00114   
00115   MuonMonitor2->GetXaxis()->SetTitle("Horizontal Position (inches)");
00116   MuonMonitor2->GetYaxis()->SetTitle("Vertical Position (inches)");
00117 
00118   MuonMonitor3->GetXaxis()->SetTitle("Horizontal Position (inches)");
00119   MuonMonitor3->GetYaxis()->SetTitle("Vertical Position (inches)");
00120 
00121   HadronMonitor->GetXaxis()->CenterTitle();
00122   HadronMonitor->GetYaxis()->CenterTitle();
00123   
00124   MuonMonitor1->GetXaxis()->CenterTitle();
00125   MuonMonitor1->GetYaxis()->CenterTitle();
00126 
00127   MuonMonitor2->GetXaxis()->CenterTitle();
00128   MuonMonitor2->GetYaxis()->CenterTitle();
00129 
00130   MuonMonitor3->GetXaxis()->CenterTitle();
00131   MuonMonitor3->GetYaxis()->CenterTitle();
00132 
00133   HadronMonitorX->GetXaxis()->CenterTitle();
00134   HadronMonitorY->GetXaxis()->CenterTitle();
00135 
00136   HadronMonitorX->GetYaxis()->CenterTitle();
00137   HadronMonitorY->GetYaxis()->CenterTitle();
00138 
00139   MuonMonitor1->SetStats(0);
00140   MuonMonitor2->SetStats(0);
00141   MuonMonitor3->SetStats(0);
00142   HadronMonitor->SetStats(0);
00143 
00144   sh1->SetGraphYTitle("Beam Intensity (mV)");
00145   sh2->SetGraphYTitle("Beam Intensity (mV)");
00146   sh3->SetGraphYTitle("Beam Intensity (mV)");
00147 
00148   sh4->SetGraphYTitle("Beam X Centroid (mm)");
00149   sh5->SetGraphYTitle("Beam X Centroid (mm)");
00150   sh6->SetGraphYTitle("Beam X Centroid (mm)");
00151   
00152   sh7->SetGraphYTitle("Beam Y Centroid (mm)");
00153   sh8->SetGraphYTitle("Beam Y Centroid (mm)");
00154   sh9->SetGraphYTitle("Beam Y Centroid (mm)");
00155 
00156   sh10->SetGraphYTitle("Beam Intensity (mV)");
00157   sh11->SetGraphYTitle("Beam Position (mm)");
00158   sh12->SetGraphYTitle("Beam Position (mm)");
00159   sh13->SetGraphYTitle("Beam RMS (mm)");
00160   sh14->SetGraphYTitle("Beam RMS (mm)");
00161 
00162   fStripHist["Beam Intensity Alcove 1"]  = sh1;
00163   fStripHist["Beam Intensity Alcove 2"]  = sh2;
00164   fStripHist["Beam Intensity Alcove 3"]  = sh3;
00165   fStripHist["Beam X Centroid Alcove 1"] = sh4;
00166   fStripHist["Beam X Centroid Alcove 2"] = sh5;
00167   fStripHist["Beam X Centroid Alcove 3"] = sh6;
00168   fStripHist["Beam Y Centroid Alcove 1"] = sh7;
00169   fStripHist["Beam Y Centroid Alcove 2"] = sh8;
00170   fStripHist["Beam Y Centroid Alcove 3"] = sh9;  
00171   fStripHist["Beam Intensity HadMon"]    = sh10;
00172   fStripHist["Beam X HadMon"]            = sh11;
00173   fStripHist["Beam Y HadMon"]            = sh12;
00174   fStripHist["Beam X RMS HadMon"]        = sh13;
00175   fStripHist["Beam Y RMS HadMon"]        = sh14;
00176 
00177   fTH2F["MuonMonitor1"]  = MuonMonitor1;
00178   fTH2F["MuonMonitor2"]  = MuonMonitor2;
00179   fTH2F["MuonMonitor3"]  = MuonMonitor3;
00180   fTH2F["HadronMonitor"] = HadronMonitor;
00181 
00182   fTH1F["HadronMonitorX"] = HadronMonitorX;
00183   fTH1F["HadronMonitorY"] = HadronMonitorY;
00184 }

HadMuMonModule::~HadMuMonModule (  )  [virtual]

Definition at line 186 of file HadMuMonModule.cxx.

00187 {
00188 
00189 }


Member Function Documentation

void HadMuMonModule::BeginJob (  )  [virtual]

Implement for notification of begin of job

Reimplemented from JobCModule.

Definition at line 194 of file HadMuMonModule.cxx.

References HistMan::Adopt(), Draw(), StripHist::DrawStrip(), fStripHist, fTH1F, fTH2F, BeamMonBaseModule::GetHistMan(), Msg::kDebug, and MSG.

00195 {
00196   MSG("BD",Msg::kDebug) << "Adding Histograms!" << endl;
00197 
00198   HistMan hm = this->GetHistMan();
00199   
00200   StripHist *sh1 = fStripHist["Beam Intensity Alcove 1"];
00201   StripHist *sh2 = fStripHist["Beam Intensity Alcove 2"];
00202   StripHist *sh3 = fStripHist["Beam Intensity Alcove 3"];
00203 
00204   TCanvas *canvas = new TCanvas("Beam Intensity from Muon Monitors","Muon Monitor Intensity",500,400);
00205 
00206   sh1->DrawStrip("AL");
00207   sh2->DrawStrip("LP");
00208   sh3->DrawStrip("L");
00209   
00210   hm.Adopt("HadMuMon",canvas);
00211 
00212   StripHist *sh4 = fStripHist["Beam X Centroid Alcove 1"];
00213   StripHist *sh5 = fStripHist["Beam X Centroid Alcove 2"];
00214   StripHist *sh6 = fStripHist["Beam X Centroid Alcove 3"];
00215   
00216   TCanvas *canvas2 = new TCanvas("Beam X Centroid from Muon Monitors","X Centroid",500,400);
00217 
00218   sh4->DrawStrip("AL");
00219   sh5->DrawStrip("LP");
00220   sh6->DrawStrip("L");
00221   
00222   hm.Adopt("HadMuMon",canvas2);
00223 
00224   StripHist *sh7 = fStripHist["Beam Y Centroid Alcove 1"];
00225   StripHist *sh8 = fStripHist["Beam Y Centroid Alcove 2"];
00226   StripHist *sh9 = fStripHist["Beam Y Centroid Alcove 3"];
00227   
00228   TCanvas *canvas3 = new TCanvas("Beam Y Centroid from Muon Monitors","Y Centroid",500,400);
00229 
00230   sh7->DrawStrip("AL");
00231   sh8->DrawStrip("LP");
00232   sh9->DrawStrip("L");
00233   
00234   hm.Adopt("HadMuMon",canvas3);
00235 
00236   StripHist *sh10 = fStripHist["Beam Intensity HadMon"];
00237 
00238   TCanvas *canvas4 = new TCanvas("Beam Intensity from Hadron Monitor","Hadron Monitor Intensity",500,400);
00239 
00240   sh10->DrawStrip("AL");
00241 
00242   hm.Adopt("HadMuMon",canvas4);
00243 
00244   StripHist *sh11 = fStripHist["Beam X HadMon"];
00245   StripHist *sh12 = fStripHist["Beam Y HadMon"];
00246   
00247   TCanvas *canvas5 = new TCanvas("Hadron Monitor Beam Location","Beam Location",500,400);
00248   
00249   sh11->DrawStrip("AL");
00250   sh12->DrawStrip("LP");
00251   
00252   hm.Adopt("HadMuMon",canvas5);
00253 
00254   StripHist *sh13 = fStripHist["Beam X RMS HadMon"];
00255   StripHist *sh14 = fStripHist["Beam Y RMS HadMon"];
00256   
00257   TCanvas *canvas6 = new TCanvas("Hadron Monitor Beam Size","Beam Size",500,400);
00258   
00259   sh13->DrawStrip("AL");
00260   sh14->DrawStrip("LP");
00261 
00262   hm.Adopt("HadMuMon",canvas6);
00263   
00264   TH2FMap::iterator uchicago, done2 = fTH2F.end();
00265   for( uchicago = fTH2F.begin(); uchicago != done2; ++ uchicago) {
00266     TH2F *hist = uchicago->second;
00267     TCanvas* canvas = new TCanvas(hist->GetTitle(),hist->GetTitle(),500,400);
00268     hist->Draw("colz");
00269     hm.Adopt("HadMuMon",canvas);
00270   }
00271   
00272   TH1FMap::iterator caltech, done3 = fTH1F.end();
00273   for( caltech = fTH1F.begin(); caltech != done3; ++caltech) {
00274     TH1F *hist = caltech->second;
00275     TCanvas* canvas8 = new TCanvas(hist->GetTitle(),hist->GetTitle(),500,400);
00276     hist->Draw();
00277     hm.Adopt("HadMuMon",canvas8);
00278   }  
00279 
00280   TH2F *th1 = fTH2F["MuonMonitor1"];
00281   TH2F *th2 = fTH2F["MuonMonitor2"];
00282   TH2F *th3 = fTH2F["MuonMonitor3"];
00283   TH2F *th4 = fTH2F["HadronMonitor"];
00284   TH1F *th5 = fTH1F["HadronMonitorX"];
00285   TH1F *th6 = fTH1F["HadronMonitorY"];
00286 
00287   TCanvas *MuMonSumCan = new TCanvas("Muon Monitor Summary Canvas","Muon Monitor Summary Canvas",800,800);
00288   MuMonSumCan -> Divide(2,3);
00289   MuMonSumCan -> cd(1);
00290   th1 -> Draw("colz");
00291   MuMonSumCan -> cd(2);
00292   sh1 -> DrawStrip("AL");
00293   sh2 -> DrawStrip("LP");
00294   sh3 -> DrawStrip("L");
00295   MuMonSumCan -> cd(3);
00296   th2 -> Draw("colz");
00297   MuMonSumCan -> cd(4);
00298   sh4 -> DrawStrip("AL");
00299   sh5 -> DrawStrip("LP");
00300   sh6 -> DrawStrip("L");
00301   MuMonSumCan -> cd(5);
00302   th3 -> Draw("colz");
00303   MuMonSumCan -> cd(6);
00304   sh7 -> DrawStrip("AL");
00305   sh8 -> DrawStrip("LP");
00306   sh9 -> DrawStrip("L");
00307 
00308   hm.Adopt("Summary Canvases",MuMonSumCan);
00309 
00310   TCanvas *HadMonSumCan = new TCanvas("Hadron Monitor Summary Canvas","Hadron Monitor Summary Canvas",800,800);
00311   HadMonSumCan -> Divide(2,3);
00312   HadMonSumCan -> cd(1);
00313   th4->Draw("colz");
00314   HadMonSumCan -> cd(2);
00315   sh10->DrawStrip("AL");
00316   HadMonSumCan -> cd(3);
00317   th5->Draw();
00318   HadMonSumCan -> cd(4);
00319   sh11->DrawStrip("AL");
00320   sh12->DrawStrip("L");
00321   HadMonSumCan -> cd(5);
00322   th6->Draw();
00323   HadMonSumCan -> cd(6);
00324   sh13->DrawStrip("AL");
00325   sh14->DrawStrip("L");
00326 
00327   hm.Adopt("Summary Canvases",HadMonSumCan);
00328    
00329 }

void HadMuMonModule::Fill ( const RawBeamMonHeaderBlock header,
const RawBeamMonBlock block 
) [private, virtual]

Subclass implements to visit each RawBeamMonBlock to fill histograms. Booking should be done in BeginJob().

Implements BeamMonBaseModule.

Definition at line 331 of file HadMuMonModule.cxx.

References BDSwicCalibrator::Calibrate(), BDHadMuMon::Channel(), fStripHist, fTH1F, fTH2F, BDSwicCalibrator::Get(), RawBeamData::GetData(), RawBeamData::GetDataLength(), RawBeamData::GetMsecs(), RawBeamData::GetName(), BDHadMuMon::GetNrowcol(), RawBeamData::GetSeconds(), BDHadMuMon::GetStats(), StripHist::GetStrip(), BDSwicDevice::GetTotalVoltage(), BDSwicDevice::GetVoltage(), Munits::inch, BDHadMuMon::Index(), Msg::kDebug, Munits::millivolt, Munits::mm, MSG, BDHadMuMon::PixelPosition(), and RangeFinder().

00332 {
00333   MSG("BD",Msg::kDebug) << "Starting HadMuMonModule::Fill" << endl;
00334 
00335   const RawBeamData *mma1ds = block["E:MMA1DS"]; 
00336   const RawBeamData *mma2ds = block["E:MMA2DS"]; 
00337   const RawBeamData *mma3ds = block["E:MMA3DS"];
00338   const RawBeamData *hadmds = block["E:HADMDS"];
00339   const RawBeamData *Etrtgtd = block["E:TRTGTD"];
00340   
00341   if(Etrtgtd && Etrtgtd->GetDataLength()) {
00342     double P2tgt  = Etrtgtd->GetData()[0];
00343     if(P2tgt < 0.1) {
00344       //If Beam intensity low, get out.
00345       return;
00346     }
00347   }
00348 
00349   if(!(mma1ds && mma2ds && mma3ds)) {
00350     MSG("BD",Msg::kDebug) << "Do not have Muon Monitor Data!" << endl;
00351     if(!mma1ds) MSG("BD",Msg::kDebug) << "  No MMA1DS" << endl;
00352     if(!mma2ds) MSG("BD",Msg::kDebug) << "  No MMA2DS" << endl;
00353     if(!mma3ds) MSG("BD",Msg::kDebug) << "  No MMA3DS" << endl;
00354     return;
00355   }
00356 
00357   if(!(mma1ds->GetDataLength() &&
00358        mma2ds->GetDataLength() &&
00359        mma3ds->GetDataLength())) {
00360     MSG("BD",Msg::kDebug) << "  Muon Monitor device but no data!" << endl;
00361     return;
00362   }
00363 
00364   if(!hadmds || !hadmds->GetDataLength()) {
00365     MSG("BD",Msg::kDebug) << "  No Hadron Monitor Data!" << endl;
00366     return;
00367   }
00368 
00369   MSG("BD",Msg::kDebug) << mma1ds->GetName() << ", len = " << mma1ds->GetDataLength() << endl;
00370   BDHadMuMon hmm1(*mma1ds);
00371   MSG("BD",Msg::kDebug) << mma1ds->GetName() << ", len = " << mma1ds->GetDataLength() << endl;
00372   MSG("BD",Msg::kDebug) << mma1ds->GetName() << ", tot = " << hmm1.GetTotalVoltage() << endl;
00373   BDHadMuMon hmm2(*mma2ds);
00374   MSG("BD",Msg::kDebug) << mma2ds->GetName() << ", tot = " << hmm2.GetTotalVoltage() << endl;
00375   BDHadMuMon hmm3(*mma3ds);
00376   MSG("BD",Msg::kDebug) << mma3ds->GetName() << ", tot = " << hmm3.GetTotalVoltage() << endl;
00377   BDHadMuMon hmm4(*hadmds);
00378   MSG("BD",Msg::kDebug) << hadmds->GetName() << ", tot = " << hmm4.GetTotalVoltage() << endl;
00379 
00380   BDSwicCalibrator::Get().Calibrate(head,block);
00381 
00382   TH2F *h1 = fTH2F["MuonMonitor1"];
00383   TH2F *h2 = fTH2F["MuonMonitor2"];
00384   TH2F *h3 = fTH2F["MuonMonitor3"];
00385   TH2F *h4 = fTH2F["HadronMonitor"];
00386 
00387   h1->Reset(); h2->Reset(); h3->Reset(); h4->Reset();
00388 
00389   TH1F *h5 = fTH1F["HadronMonitorX"];
00390   TH1F *h6 = fTH1F["HadronMonitorY"];
00391 
00392   h5->Reset(); h6->Reset();
00393 
00394   StripHist* sh1  = fStripHist["Beam Intensity Alcove 1"];
00395   StripHist* sh2  = fStripHist["Beam Intensity Alcove 2"];
00396   StripHist* sh3  = fStripHist["Beam Intensity Alcove 3"];
00397   StripHist* sh4  = fStripHist["Beam X Centroid Alcove 1"];
00398   StripHist* sh5  = fStripHist["Beam X Centroid Alcove 2"];
00399   StripHist* sh6  = fStripHist["Beam X Centroid Alcove 3"];
00400   StripHist* sh7  = fStripHist["Beam Y Centroid Alcove 1"];
00401   StripHist* sh8  = fStripHist["Beam Y Centroid Alcove 2"];
00402   StripHist* sh9  = fStripHist["Beam Y Centroid Alcove 3"];
00403   StripHist* sh10 = fStripHist["Beam Intensity HadMon"];
00404   StripHist* sh11 = fStripHist["Beam X HadMon"];
00405   StripHist* sh12 = fStripHist["Beam Y HadMon"];
00406   StripHist* sh13 = fStripHist["Beam X RMS HadMon"];
00407   StripHist* sh14 = fStripHist["Beam Y RMS HadMon"];
00408   
00409   for(int row = 1; row <= hmm1.GetNrowcol(); row++) {
00410     for(int col = 1; col <= hmm1.GetNrowcol(); col++) {
00411       // muon monitors all have identical channel mappings
00412       int index = hmm1.Index(hmm1.Channel(row,col));
00413       h1->Fill(hmm1.PixelPosition(col) / Munits::inch, 
00414                hmm1.PixelPosition(row) / Munits::inch, 
00415                hmm1.GetVoltage(index)/Munits::millivolt);
00416       
00417       h2->Fill(hmm2.PixelPosition(col) / Munits::inch, 
00418                hmm2.PixelPosition(row) / Munits::inch, 
00419                hmm2.GetVoltage(index)/Munits::millivolt);
00420 
00421       h3->Fill(hmm3.PixelPosition(col) / Munits::inch, 
00422                hmm3.PixelPosition(row) / Munits::inch, 
00423                hmm3.GetVoltage(index)/Munits::millivolt);
00424     }
00425   }
00426 
00427   for(int row = 1; row <= hmm4.GetNrowcol(); row++) {
00428     for(int col = 1; col <= hmm4.GetNrowcol(); col++) {
00429       double v = hmm4.GetVoltage(hmm4.Index(hmm4.Channel(row, col)));
00430       v /= Munits::millivolt;
00431       h4->Fill(hmm4.PixelPosition(col) / Munits::inch,
00432                hmm4.PixelPosition(row) / Munits::inch, v);
00433       h5->Fill(hmm4.PixelPosition(col) / Munits::inch, v);
00434       h6->Fill(hmm4.PixelPosition(row) / Munits::inch, v);
00435     }
00436   }
00437 
00438   h5->GetYaxis()->SetTitleOffset(1.2);
00439   h6->GetYaxis()->SetTitleOffset(1.2);
00440 
00441   double q1   = hmm1.GetTotalVoltage() / Munits::millivolt;
00442   double q2   = hmm2.GetTotalVoltage() / Munits::millivolt;
00443   double q3   = hmm3.GetTotalVoltage() / Munits::millivolt;
00444   double q4   = hmm4.GetTotalVoltage() / Munits::millivolt;
00445   double dae1 = mma1ds->GetSeconds() + 1.0e-6*mma1ds->GetMsecs();
00446   double dae2 = mma2ds->GetSeconds() + 1.0e-6*mma2ds->GetMsecs();
00447   double dae3 = mma3ds->GetSeconds() + 1.0e-6*mma3ds->GetMsecs();
00448   double dae4 = hadmds->GetSeconds() + 1.0e-6*hadmds->GetMsecs();
00449 
00450   sh1  -> Fill(dae1, q1);
00451   sh2  -> Fill(dae2, q2);
00452   sh3  -> Fill(dae3, q3);
00453   sh10 -> Fill(dae4, q4);
00454 
00455   double min1 = 0.0, max1 = 1.0;
00456 
00457   RangeFinder(sh1, sh2, sh3, min1, max1);
00458 
00459   sh1->GetStrip().GetYaxis()->SetRangeUser(min1, max1);
00460   sh2->GetStrip().GetYaxis()->SetRangeUser(min1, max1);
00461   sh3->GetStrip().GetYaxis()->SetRangeUser(min1, max1);
00462   
00463   double xmean1 = 0.0, ymean1 = 0.0, xrms1 = 0.0, yrms1 = 0.0;
00464   double xmean2 = 0.0, ymean2 = 0.0, xrms2 = 0.0, yrms2 = 0.0;
00465   double xmean3 = 0.0, ymean3 = 0.0, xrms3 = 0.0, yrms3 = 0.0;
00466   double xmean4 = 0.0, ymean4 = 0.0, xrms4 = 0.0, yrms4 = 0.0;
00467   
00468   hmm1.GetStats(xmean1, ymean1, xrms1, yrms1);
00469   hmm2.GetStats(xmean2, ymean2, xrms2, yrms2);
00470   hmm3.GetStats(xmean3, ymean3, xrms3, yrms3);
00471   hmm4.GetStats(xmean4, ymean4, xrms4, yrms4);
00472   
00473   sh4 -> Fill(dae1, xmean1 / Munits::mm);
00474   sh5 -> Fill(dae2, xmean2 / Munits::mm);
00475   sh6 -> Fill(dae3, xmean3 / Munits::mm);
00476 
00477   double min2 = 0.0, max2 = 1.0;
00478 
00479   RangeFinder(sh4, sh5, sh6, min2, max2);
00480 
00481   sh4->GetStrip().GetYaxis()->SetRangeUser(min2, max2);
00482   sh5->GetStrip().GetYaxis()->SetRangeUser(min2, max2);
00483   sh6->GetStrip().GetYaxis()->SetRangeUser(min2, max2);
00484 
00485   sh7  -> Fill(dae1, ymean1 / Munits::mm);
00486   sh8  -> Fill(dae2, ymean2 / Munits::mm);
00487   sh9  -> Fill(dae3, ymean3 / Munits::mm);
00488 
00489   double min3 = 0.0, max3 = 1.0;
00490 
00491   RangeFinder(sh7, sh8, sh9, min3, max3);
00492 
00493   sh7->GetStrip().GetYaxis()->SetRangeUser(min3, max3);
00494   sh8->GetStrip().GetYaxis()->SetRangeUser(min3, max3);
00495   sh9->GetStrip().GetYaxis()->SetRangeUser(min3, max3);
00496 
00497   sh11 -> Fill(dae4, xmean4 / Munits::mm);
00498   sh12 -> Fill(dae4, ymean4 / Munits::mm);
00499 
00500   double min4 = 0.0, max4 = 1.0;
00501 
00502   RangeFinder(sh11, sh12, min4, max4);
00503 
00504   sh11->GetStrip().GetYaxis()->SetRangeUser(min4, max4);
00505   sh12->GetStrip().GetYaxis()->SetRangeUser(min4, max4);
00506 
00507   sh13 -> Fill(dae4, xrms4  / Munits::mm);
00508   sh14 -> Fill(dae4, yrms4  / Munits::mm);
00509 
00510   double min5 = 0.0, max5 = 1.0;
00511 
00512   RangeFinder(sh13, sh14, min5, max5);
00513 
00514   sh13->GetStrip().GetYaxis()->SetRangeUser(min5, max5);
00515   sh14->GetStrip().GetYaxis()->SetRangeUser(min5, max5);
00516 
00517 }

void HadMuMonModule::RangeFinder ( StripHist sh1,
StripHist sh2,
double &  min,
double &  max 
) [private]

Definition at line 574 of file HadMuMonModule.cxx.

References StripHist::GetMax(), StripHist::GetMin(), maximum, and minimum.

00575 {
00576   double max1 = sh1->GetMax(), max2 = sh2->GetMax();
00577   double min1 = sh1->GetMin(), min2 = sh2->GetMin();
00578 
00579   min = minimum(min1, min2);
00580   max = maximum(max1, max2);
00581 
00582   if(min != 0.0) {
00583     if(min < 0) {
00584       min *= 1.5;
00585     } else {
00586       min *= 0.5;
00587     }
00588   } else {
00589     min = -0.5;
00590   }
00591 
00592   if(max != 0.0) {
00593     if(max < 0) {
00594       max *= 0.5;
00595     } else {
00596       max *= 1.5;
00597     }
00598   } else {
00599     max = 0.5;
00600   }
00601 
00602 }

void HadMuMonModule::RangeFinder ( StripHist sh1,
StripHist sh2,
StripHist sh3,
double &  min,
double &  max 
) [private]

Definition at line 519 of file HadMuMonModule.cxx.

References StripHist::GetMax(), and StripHist::GetMin().

Referenced by Fill().

00520 {
00521   double max1 = sh1->GetMax(), max2 = sh2->GetMax(), max3 = sh3->GetMax();
00522   double min1 = sh1->GetMin(), min2 = sh2->GetMin(), min3 = sh3->GetMin();
00523 
00524   if(min1 < min2) {
00525     if(min1 < min3) {
00526       min = min1;
00527     } else {
00528       min = min3;
00529     }
00530   } else {
00531     if(min2 < min3) {
00532       min = min2;
00533     } else {
00534       min = min3;
00535     }
00536   }
00537 
00538   if(max1 > max2) {
00539     if(max1 > max3) {
00540       max = max1;
00541     } else {
00542       max = max3;
00543     }
00544   } else {
00545     if(max2 > max3) {
00546       max = max2;
00547     } else {
00548       max = max3;
00549     }
00550   }
00551 
00552   if(min != 0.0) {
00553     if(min < 0) {
00554       min *= 1.5;
00555     } else {
00556       min *= 0.5;
00557     }
00558   } else {
00559     min = -0.5;
00560   }
00561 
00562   if(max != 0.0) {
00563     if(max < 0) {
00564       max *= 0.5;
00565     } else {
00566       max *= 1.5;
00567     }
00568   } else {
00569     max = 0.5;
00570   }
00571 
00572 }


Member Data Documentation

std::map<std::string,StripHist*> HadMuMonModule::fStripHist [private]

Definition at line 25 of file HadMuMonModule.h.

Referenced by BeginJob(), Fill(), and HadMuMonModule().

std::map<std::string,TH1F*> HadMuMonModule::fTH1F [private]

Definition at line 27 of file HadMuMonModule.h.

Referenced by BeginJob(), Fill(), and HadMuMonModule().

std::map<std::string,TH2F*> HadMuMonModule::fTH2F [private]

Definition at line 26 of file HadMuMonModule.h.

Referenced by BeginJob(), Fill(), and HadMuMonModule().

const MomNavigator* HadMuMonModule::mom [private]

Definition at line 38 of file HadMuMonModule.h.


The documentation for this class was generated from the following files:
Generated on Fri Oct 10 22:45:42 2014 for loon by  doxygen 1.4.7