Changeset 7365 for trunk/MagicSoft/Mars/mmuon
- Timestamp:
- 09/26/05 19:17:18 (19 years ago)
- Location:
- trunk/MagicSoft/Mars/mmuon
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/mmuon/MHMuonPar.cc
r7253 r7365 258 258 const Int_t bin2 = p.GetXaxis()->FindFixBin(b); 259 259 260 return Integral(p, bin1, bin2); 260 // return Integral(p, bin1, bin2); 261 return p.Integral(bin1, bin2); 261 262 } 262 263 … … 265 266 if (TString(opt)==TString("pad4")) 266 267 { 267 const TString txt = Form("\\Sigma_{%.2f\\circ}^{%.2f\\circ} = %3.1fm", 268 fgIntegralLoLim, fgIntegralUpLim, Integral(fHistBroad)*1000); 268 const TString txt = Form("\\Sigma_{%.2f\\circ}^{%.2f\\circ} = %.3f", 269 fgIntegralLoLim, fgIntegralUpLim, Integral(fHistBroad)); 270 // fgIntegralLoLim, fgIntegralUpLim, Integral(fHistBroad)*1000); 269 271 270 272 TLatex text(0.55, 0.93, txt); -
trunk/MagicSoft/Mars/mmuon/MHSingleMuon.cc
r7225 r7365 127 127 fHistWidth.UseCurrentStyle(); 128 128 129 fHistTime.SetName("HistTime"); 130 fHistTime.SetTitle("HistTime"); 131 fHistTime.SetXTitle("timing difference"); 132 fHistTime.SetYTitle("number of pixels"); 133 fHistTime.SetDirectory(NULL); 134 fHistTime.SetFillStyle(4000); 135 fHistTime.UseCurrentStyle(); 136 129 137 MBinning bins; 130 138 bins.SetEdges(20, -180, 180); … … 133 141 bins.SetEdges(28, 0.3, 1.7); 134 142 bins.Apply(fHistWidth); 143 144 bins.SetEdges(100, -10, 10); 145 bins.Apply(fHistTime); 135 146 } 136 147 … … 169 180 ApplyBinning(*plist, "ArcPhi", &fHistPhi); 170 181 ApplyBinning(*plist, "MuonWidth", &fHistWidth); 182 ApplyBinning(*plist, "MuonTime", &fHistTime); 171 183 172 184 return kTRUE; … … 182 194 fHistPhi.Reset(); 183 195 fHistWidth.Reset(); 196 fHistTime.Reset(); 184 197 185 198 const Int_t entries = fSignalCam->GetNumPixels(); … … 202 215 if (dist < fMuonSearchPar->GetRadius() + fMargin && 203 216 dist > fMuonSearchPar->GetRadius() - fMargin) 204 fHistPhi.Fill(TMath::ATan2(dx, dy)*TMath::RadToDeg(), pix.GetNumPhotons()); 205 217 { 218 fHistTime.Fill(pix.GetArrivalTime()-fMuonSearchPar->GetTime()); 219 } 206 220 // use only the inner pixles. FIXME: This is geometry dependent 207 221 if(i>397) … … 210 224 fHistWidth.Fill(dist*fGeomCam->GetConvMm2Deg(), pix.GetNumPhotons()); 211 225 } 212 226 // Setup the function and perform the fit 227 TF1 g1("g1", "gaus", -10, 10); 228 229 // Choose starting values as accurate as possible 230 g1.SetParameter(0, fHistTime.GetMaximum()); 231 g1.SetParameter(1, 0); 232 g1.SetParameter(2, 0.3); 233 g1.SetParLimits(1, -0.5, 0.5); 234 g1.SetParLimits(2, 0, 1); 235 // options : N do not store the function, do not draw 236 // I use integral of function in bin rather than value at bin center 237 // R use the range specified in the function range 238 // Q quiet mode 239 fHistTime.Fit(&g1, "QNRB"); 240 241 // Double_t err; 242 Double_t mean, meanerr, sig, sigerr; 243 gMinuit->GetParameter(2, sig, sigerr); // get the sigma value 244 gMinuit->GetParameter(1, mean, meanerr); // get the sigma value 245 246 for (Int_t i=0; i<entries; i++) 247 { 248 const MSignalPix &pix = (*fSignalCam)[i]; 249 const MGeomPix &gpix = (*fGeomCam)[i]; 250 251 const Float_t dx = gpix.GetX() - cenx; 252 const Float_t dy = gpix.GetY() - ceny; 253 254 const Float_t dist = TMath::Hypot(dx, dy); 255 256 // if the signal is not near the estimated circle, it is ignored. 257 if (dist < fMuonSearchPar->GetRadius() + fMargin && 258 dist > fMuonSearchPar->GetRadius() - fMargin) 259 { 260 if(TMath::Abs(pix.GetArrivalTime()-(fMuonSearchPar->GetTime()+mean))<2*sig) 261 fHistPhi.Fill(TMath::ATan2(dx, dy)*TMath::RadToDeg(), pix.GetNumPhotons()); 262 } 263 } 213 264 // error estimation (temporaly) 214 265 // The error is estimated from the signal. In order to do so, we have to … … 244 295 // below the threshold is found, kFALSE is returned. 245 296 // 246 Bool_t MHSingleMuon::FindRangeAboveThreshold(const T H1&h, Float_t thres, Int_t &first, Int_t &last) const297 Bool_t MHSingleMuon::FindRangeAboveThreshold(const TProfile &h, Float_t thres, Int_t &first, Int_t &last) const 247 298 { 248 299 const Int_t n = h.GetNbinsX(); … … 362 413 // R use the range specified in the function range 363 414 // Q quiet mode 364 fHistWidth.Fit(&f1, "QR0"); 415 // fHistWidth.Fit(&f1, "QRO"); 416 fHistWidth.Fit(&f1, "QRN"); 365 417 366 418 chi = f1.GetChisquare()/f1.GetNDF(); … … 477 529 gPad->SetBorderMode(0); 478 530 fHistWidth.Draw(); 479 480 } 531 } -
trunk/MagicSoft/Mars/mmuon/MHSingleMuon.h
r7225 r7365 24 24 Double_t fMargin; //! 25 25 26 T H1FfHistPhi; // Histogram of photon distribution along the arc.26 TProfile fHistPhi; // Histogram of photon distribution along the arc. 27 27 TProfile fHistWidth; // Histogram of radial photon distribution of the arc. 28 TH1F fHistTime; // Histogram of arrival time distribution along the arc. 28 29 29 Bool_t FindRangeAboveThreshold(const T H1&h, Float_t thres, Int_t &first, Int_t &last) const;30 Bool_t FindRangeAboveThreshold(const TProfile &h, Float_t thres, Int_t &first, Int_t &last) const; 30 31 31 32 public: … … 38 39 Bool_t CalcWidth(Double_t, Double_t &, Double_t &); 39 40 40 const TH1F &GetHistPhi() const { return fHistPhi; } 41 const TProfile &GetHistPhi() const { return fHistPhi; } 42 const TH1F &GetHistTime() const { return fHistTime; } 41 43 const TProfile &GetHistWidth() const { return fHistWidth; } 42 44 -
trunk/MagicSoft/Mars/mmuon/MMuonSearchPar.cc
r7176 r7365 89 89 fCenterX = 0; 90 90 fCenterY = 0; 91 fTime = 0; 91 92 } 92 93 … … 150 151 151 152 Int_t p=0; 153 Int_t q=0; 154 155 Float_t fTime2=0; 156 152 157 for (int i=0; i<n; i++) 153 158 { 154 159 const MSignalPix &pix = evt[i]; 160 155 161 if (pix.IsPixelUsed()) 156 162 { … … 160 166 fY[p] = geom[i].GetY(); 161 167 p++; 168 169 //timing 170 if(pix.IsPixelCore()) 171 { 172 fTime += pix.GetArrivalTime(); 173 fTime2 += pix.GetArrivalTime()*pix.GetArrivalTime(); 174 q++; 175 } 162 176 } 163 177 } 178 fTime = fTime/q; 179 fTime2 = fTime2/q; 180 fTimeRms = TMath::Sqrt(fTime2-(fTime*fTime)); 181 164 182 fSignal.Set(p); 165 183 -
trunk/MagicSoft/Mars/mmuon/MMuonSearchPar.h
r7134 r7365 21 21 Float_t fCenterX; // An estimated center position in X of the muon ring [mm] 22 22 Float_t fCenterY; // An estimated center position in Y of the muon ring [mm] 23 Float_t fTime; 24 Float_t fTimeRms; 23 25 24 26 MArrayF fSignal; //! Temporary storage for signal … … 40 42 Float_t GetCenterX() const { return fCenterX; } 41 43 Float_t GetCenterY() const { return fCenterY; } 44 Float_t GetTime() const { return fTime; } 45 Float_t GetTimeRms() const { return fTimeRms; } 42 46 43 47 // MMuonSearchPar -
trunk/MagicSoft/Mars/mmuon/MMuonSetup.cc
r7225 r7365 49 49 // 50 50 MMuonSetup::MMuonSetup(const char *name, const char *title) 51 : fMargin(0.2), fThresholdArcPhi( 30), fThresholdArcWidth(2)51 : fMargin(0.2), fThresholdArcPhi(5), fThresholdArcWidth(2) 52 52 { 53 53 fName = name ? name : "MMuonSetup";
Note:
See TracChangeset
for help on using the changeset viewer.