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 ( void   )  [virtual]

Implement for notification of begin of job

Reimplemented from JobCModule.

Definition at line 194 of file HadMuMonModule.cxx.

References HistMan::Adopt(), cd(), Divide(), 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 BDHadMuMon::Channel(), fStripHist, fTH1F, fTH2F, JobCModule::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().

Definition at line 38 of file HadMuMonModule.h.


The documentation for this class was generated from the following files:

Generated on 22 May 2017 for loon by  doxygen 1.6.1