- Timestamp:
- 08/12/04 21:43:15 (20 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/Changelog
r4604 r4605 21 21 22 22 2004/08/12: Markus Gaug 23 24 * msignal/MExtractBlindPixel.[h,cc] 25 - Set the method from outside 26 - unified the defaults to new blind pixels 23 27 24 28 * mjobs/MJCalibration.[h,cc] -
trunk/MagicSoft/Mars/mcalib/MCalibrate.cc
r4580 r4605 398 398 399 399 // 400 // The following part is the outcommented first version of the error calculation400 // The following part is the commented first version of the error calculation 401 401 // Contact Markus Gaug for questions (or wait for the next documentation update...) 402 402 // -
trunk/MagicSoft/Mars/mjobs/MJCalibration.cc
r4451 r4605 109 109 #include "MCalibrationChargePINDiode.h" 110 110 #include "MCalibrationChargeBlindPix.h" 111 #include "MCalibrationChargeBlindCam.h" 112 #include "MCalibrationChargeBlindPix.h" 111 113 #include "MCalibrationChargeCalc.h" 112 114 … … 114 116 #include "MHCalibrationCam.h" 115 117 #include "MHCalibrationChargeCam.h" 116 #include "MHCalibrationChargeBlindPix.h" 118 #include "MHCalibrationChargeBlindCam.h" 119 #include "MHCalibrationChargePINDiode.h" 117 120 #include "MHCalibrationRelTimeCam.h" 118 121 #include "MCalibrationRelTimeCam.h" … … 142 145 using namespace std; 143 146 144 const Int_t MJCalibration::gkIFAEBoxInaugurationRun = 20113; 147 const Int_t MJCalibration::gkIFAEBoxInaugurationRun = 20113; 148 const Int_t MJCalibration::gkSecondBlindPixelInstallation = 31693; 149 const Int_t MJCalibration::gkThirdBlindPixelInstallation = 99999; 145 150 // -------------------------------------------------------------------------- 146 151 // … … 210 215 void MJCalibration::DisplayResult(MParList &plist) 211 216 { 217 212 218 if (!fDisplay) 213 219 return; … … 417 423 if (fDisplayType == kDataCheckDisplay) 418 424 { 425 419 426 TCanvas &c1 = fDisplay->AddTab("Fit.Charge"); 420 427 c1.Divide(3, 3); 421 428 422 disp1.CamDraw( c1, 1, 3, 5);423 disp4.CamDraw( c1, 2, 3, 5);429 disp1.CamDraw( c1, 1, 3, 5); 430 disp4.CamDraw( c1, 2, 3, 5); 424 431 disp28.CamDraw(c1, 3, 3, 5); 425 432 … … 456 463 disp31.CamDraw(c5, 2, 2, 2); 457 464 } 458 459 465 460 466 return; … … 684 690 // 685 691 // Here starts the list of runs where the shifters did not put 686 // a colour, but which have been found out by other means 692 // a colour, but which have been found out by other means. 693 // FIXME: This list has is only preliminary and has to move into the 694 // database!! 687 695 // 696 if (filenames.Contains("_30090_")) 697 if (fColor == MCalibrationCam::kNONE) 698 { 699 *fLog << "Found colour: kGREEN in " << filenames << endl; 700 fColor = MCalibrationCam::kGREEN; 701 } 702 else if (fColor != MCalibrationCam::kNONE) 703 { 704 *fLog << err << "Different colour found in " << filenames << "... abort" << endl; 705 return kFALSE; 706 } 707 688 708 if (filenames.Contains("_27474_")) 689 709 if (fColor == MCalibrationCam::kNONE) … … 801 821 // 802 822 // Here start the runs where the shifter put 803 // the colour 823 // the colour. 804 824 // 805 825 if (filenames.Contains("green")) … … 933 953 // 8) MContinue(MFCosmics) 934 954 // 9) MFillH("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode") 935 // 10) MFillH("MHCalibrationChargeBlind Pix", "MExtractedSignalBlindPixel")955 // 10) MFillH("MHCalibrationChargeBlindCam", "MExtractedSignalBlindPixel") 936 956 // 11) MFillH("MHCalibrationChargeCam", "MExtractedSignalCam") 937 957 // 12) MFillH("MHCalibrationChargeCam", "MExtractedSignalCam") … … 987 1007 } 988 1008 989 MHCalibrationChargeCam chargecam; 1009 MHCalibrationChargeCam chargecam; 1010 MHCalibrationChargeBlindCam blindcam; 990 1011 991 1012 plist.AddToList(&pedcam); 992 plist.AddToList(&chargecam); 1013 plist.AddToList(&chargecam); 1014 plist.AddToList(&blindcam); 993 1015 plist.AddToList(&fBadPixels); 994 1016 plist.AddToList(&fQECam); 995 1017 plist.AddToList(&fCalibrationCam); 996 plist.AddToList(&fCalibrationBlind Pix);1018 plist.AddToList(&fCalibrationBlindCam); 997 1019 plist.AddToList(&fCalibrationPINDiode); 998 1020 plist.AddToList(&fRelTimeCam); 999 1021 1000 1022 MGeomApply apply; 1001 // MBadPixelsMerge merge(&fBadPixels);1002 1023 MExtractPINDiode pinext; 1003 1024 MExtractBlindPixel blindext; 1025 1026 // 1027 // Initialize the blind pixel. Unfortunately, there is a hardware difference 1028 // in the first blind pixel until run "gkSecondBlindPixelInstallation" and the 1029 // later setup. The first needs to use a filter because of the length of 1030 // spurious NSB photon signals. The latter get better along extracting the amplitude 1031 // from a small window. 1032 // 1033 TArrayI arr = fRuns->GetRuns(); 1034 if (arr[fRuns->GetNumRuns()-1] < gkSecondBlindPixelInstallation) 1035 { 1036 blindext.SetModified(kFALSE); 1037 blindext.SetExtractionType(MExtractBlindPixel::kIntegral); 1038 blindext.SetExtractionType(MExtractBlindPixel::kFilter); 1039 blindext.SetRange(10,19,0,2); 1040 blindcam.SetFitFunc( MHCalibrationChargeBlindPix::kEPoisson5 ); 1041 } 1042 else 1043 { 1044 blindext.SetModified(kTRUE); 1045 blindext.SetExtractionType(MExtractBlindPixel::kAmplitude); 1046 blindext.SetExtractionType(MExtractBlindPixel::kFilter); 1047 blindext.SetRange(5,8,0,2); 1048 blindext.SetNSBFilterLimit(38); 1049 if (arr[fRuns->GetNumRuns()-1] < gkThirdBlindPixelInstallation) 1050 blindext.SetNumBlindPixels(2); 1051 else 1052 blindext.SetNumBlindPixels(3); 1053 } 1054 1004 1055 MExtractSlidingWindow extract2; 1005 1056 MExtractTimeFastSpline timespline; … … 1024 1075 1025 1076 MFillH fillpin("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode"); 1026 MFillH fillbnd("MHCalibrationChargeBlind Pix", "MExtractedSignalBlindPixel");1077 MFillH fillbnd("MHCalibrationChargeBlindCam", "MExtractedSignalBlindPixel"); 1027 1078 MFillH fillcam("MHCalibrationChargeCam", "MExtractedSignalCam"); 1028 1079 MFillH filltme("MHCalibrationRelTimeCam", "MArrivalTimeCam"); … … 1032 1083 filltme.SetNameTab("RelTimes"); 1033 1084 1085 TString drawoption; 1086 1034 1087 if (fDisplayType == kDataCheckDisplay) 1035 { 1036 fillcam.SetDrawOption("datacheck"); 1037 fillbnd.SetDrawOption("datacheck"); 1038 fillpin.SetDrawOption("datacheck"); 1039 filltme.SetDrawOption("datacheck"); 1040 } 1041 1088 drawoption += "datacheck"; 1042 1089 if (fDisplayType == kFullDisplay) 1043 {1044 fillcam.SetDrawOption("all");1045 filltme.SetDrawOption("all");1046 }1047 1048 1090 drawoption += " all"; 1091 1092 fillcam.SetDrawOption(drawoption.Data()); 1093 fillbnd.SetDrawOption(drawoption.Data()); 1094 fillpin.SetDrawOption(drawoption.Data()); 1095 filltme.SetDrawOption(drawoption.Data()); 1049 1096 // 1050 1097 // Apply a filter against cosmics … … 1067 1114 } 1068 1115 1069 1070 1116 tlist.AddToList(&pinext); 1071 1117 tlist.AddToList(&blindext); … … 1088 1134 tlist.AddToList(&fillcam); 1089 1135 1136 if (fRelTimes) 1137 { 1138 tlist.AddToList(&filltme); 1139 tlist.AddToList(&timecalc); 1140 } 1141 1142 if (IsUseBlindPixel()) 1143 tlist.AddToList(&fillbnd); 1090 1144 if (IsUsePINDiode()) 1091 1145 tlist.AddToList(&fillpin); 1092 if (IsUseBlindPixel())1093 tlist.AddToList(&fillbnd);1094 1146 1095 1147 tlist.AddToList(&calcalc); 1096 1097 if (fRelTimes)1098 {1099 tlist.AddToList(&filltme);1100 tlist.AddToList(&timecalc);1101 }1102 1103 1148 1104 1149 // Create and setup the eventloop … … 1117 1162 tlist.PrintStatistics(); 1118 1163 1164 // 1165 // The next lines are necessary in order to avoid that 1166 // the last entry drawn by MFillH gets deleted again from 1167 // the display. No idea where this comes from... 1168 // 1169 if (fDisplay) 1170 { 1171 if (IsUsePINDiode()) 1172 { 1173 MHCalibrationChargePINDiode *pin = 1174 (MHCalibrationChargePINDiode*)plist.FindObject("MHCalibrationChargePINDiode"); 1175 pin->DrawClone(Form("nonew %s",drawoption.Data())); 1176 } 1177 else if (IsUseBlindPixel()) 1178 { 1179 MHCalibrationChargeBlindCam *cam = 1180 (MHCalibrationChargeBlindCam*)plist.FindObject("MHCalibrationChargeBlindCam"); 1181 cam->DrawClone(Form("nonew %s",drawoption.Data())); 1182 } 1183 else if (fRelTimes) 1184 { 1185 MHCalibrationRelTimeCam *cam = 1186 (MHCalibrationRelTimeCam*)plist.FindObject("MHCalibrationRelTimeCam"); 1187 cam->DrawClone(Form("nonew %s",drawoption.Data())); 1188 } 1189 else 1190 { 1191 MHCalibrationChargeCam *cam = 1192 (MHCalibrationChargeCam*)plist.FindObject("MHCalibrationChargeCam"); 1193 cam->DrawClone(Form("nonew %s",drawoption.Data())); 1194 } 1195 } 1196 1119 1197 DisplayResult(plist); 1120 1198 … … 1249 1327 } 1250 1328 1251 if (fCalibrationBlind Pix.Write()<=0)1252 { 1253 *fLog << err << "Unable to write MCalibrationChargeBlind Pixto " << oname << endl;1329 if (fCalibrationBlindCam.Write()<=0) 1330 { 1331 *fLog << err << "Unable to write MCalibrationChargeBlindCam to " << oname << endl; 1254 1332 return kFALSE; 1255 1333 } -
trunk/MagicSoft/Mars/msignal/MExtractBlindPixel.cc
r4399 r4605 74 74 using namespace std; 75 75 76 const Int_t MExtractBlindPixel::fgNumBlindPixels = 2; 76 77 const UInt_t MExtractBlindPixel::fgBlindPixelIds[3] = { 559, 560, 561 }; 77 78 const UInt_t MExtractBlindPixel::fgBlindPixelIdx = 559; 78 const Byte_t MExtractBlindPixel::fgFirst = 0;79 const Byte_t MExtractBlindPixel::fgLast = 7;80 79 const Byte_t MExtractBlindPixel::fgHiGainFirst = 10; 81 80 const Byte_t MExtractBlindPixel::fgHiGainLast = 19; … … 84 83 const Int_t MExtractBlindPixel::fgNSBFilterLimit = 70; 85 84 const Float_t MExtractBlindPixel::fgResolution = 0.003; 86 const UInt_t MExtractBlindPixel::gkModificationRun = 31693;87 85 const Float_t MExtractBlindPixel::gkOverflow = 300.; 88 86 // -------------------------------------------------------------------------- … … 114 112 SetRange(fgHiGainFirst, fgHiGainLast, fgLoGainFirst, fgLoGainLast); 115 113 116 SetFirst(); 117 SetLast(); 114 SetNumBlindPixels(); 118 115 119 116 Clear(); … … 206 203 // - MExtractor::PreProcess(pList) 207 204 // 208 // Sets fModified to kTRUE if the current run number is greater or equal gkModificationRun209 //210 205 // The following output containers are also searched and created if 211 206 // they were not found: 212 207 // 213 208 // - MExtractedBlindPixel 214 //215 //216 209 // 217 210 Int_t MExtractBlindPixel::PreProcess(MParList *pList) … … 255 248 delete [] fHiGainSecondDeriv; 256 249 257 if ( fRunHeader->GetRunNumber() >= gkModificationRun)250 if (fModified) 258 251 { 259 fModified = kTRUE; 260 SetExtractionType(kAmplitude); 261 SetRange(fFirst,fLast); 262 for (Int_t i=0;i<3;i++) 252 for (Int_t i=0;i<fNumBlindPixels;i++) 263 253 { 264 265 254 SetBlindPixelIdx(fgBlindPixelIds[i],i); 255 fBlindPixel->SetBlindPixelIdx(fgBlindPixelIds[i],i); 266 256 } 267 257 } 268 258 else 269 { 270 fBlindPixel->SetBlindPixelIdx(fBlindPixelIdx.At(0)); 271 SetExtractionType(kIntegral); 272 SetExtractionType(kFilter); 273 } 259 fBlindPixel->SetBlindPixelIdx(fBlindPixelIdx.At(0)); 274 260 275 261 fBlindPixel->SetExtractionType(fExtractionType); … … 351 337 fHiLoLast ? (Int_t)fHiLoLast-1 : (Int_t)fHiGainLast ) 352 338 << endl; 339 353 340 if (IsExtractionType(kFilter)) 354 341 *fLog << inf << GetDescriptor() << ": Will use Filter using " … … 377 364 378 365 Int_t summ = 0; 379 Byte_t *p 366 Byte_t *p = ptr; 380 367 Byte_t *end = ptr + fHiGainLast - fHiGainFirst + 1; 381 368 … … 694 681 Byte_t sat = 0; 695 682 696 if ( !fModified)683 if (IsExtractionType(kFilter)) 697 684 { 698 685 … … 706 693 continue; 707 694 } 695 696 sum = 0; 697 FindSignalFilter(pixel.GetLoGainSamples(), sum, sat); 698 699 /* 700 if (fModified) 701 { 702 if (sum > fNSBFilterLimit) 703 { 704 fBlindPixel->SetExtractedSignal(-1.,id); 705 fBlindPixel->SetNumSaturated(sat,id); 706 fBlindPixel->SetReadyToSave(); 707 continue; 708 } 709 } 710 */ 708 711 } 709 712 710 713 Float_t newsum = 0.; 711 714 sat = 0; … … 716 719 FindIntegral (pixel.GetHiGainSamples()+fHiGainFirst, pixel.GetLoGainSamples(), newsum, sat); 717 720 721 718 722 fBlindPixel->SetExtractedSignal(newsum,id); 719 723 fBlindPixel->SetNumSaturated(sat,id); -
trunk/MagicSoft/Mars/msignal/MExtractBlindPixel.h
r4386 r4605 15 15 private: 16 16 17 static const Int_t fgNumBlindPixels; //! Default number of blind pixels after modification run 17 18 static const UInt_t fgBlindPixelIds[3]; //! Default blind pixel indices after modification run 18 19 static const UInt_t fgBlindPixelIdx; //! Default blind pixels index before modification run 19 static const Byte_t fgFirst; //! Default First FADC slice after modification run (currently set to: 2 )20 static const Byte_t fgLast ; //! Default Last FADC slice after modification run (currently set to: 13 )21 20 static const Byte_t fgHiGainFirst; //! Default First FADC slice Hi-Gain Signal (currently set to: 10 ) 22 21 static const Byte_t fgHiGainLast; //! Default Last FADC slice Hi-Gain Signal (currently set to: 29 ) … … 26 25 static const Float_t fgResolution; //! Default for fResolution (currently set to: 0.003) 27 26 static const Float_t gkOverflow; //! Default sum to assign overflow in case of saturation 28 static const UInt_t gkModificationRun; //! Run number from which on three blind pixels are used29 27 30 28 MExtractedSignalBlindPixel *fBlindPixel; // Extracted signal of the Blind Pixel 31 29 32 Byte_t fFirst; // First extraction slice for runs after modification33 Byte_t fLast; // Last extraction slice for runs after modification34 30 Byte_t fHiLoFirst; // If not zero, start extraction from fHiLoFirst slice of Low-Gain 35 31 … … 45 41 Byte_t fExtractionType; // What extraction type has been chosen? 46 42 43 Int_t fNumBlindPixels; // Current number of blind pixels 44 47 45 public: 48 46 enum ExtractionType_t { kAmplitude, kIntegral, kFilter }; … … 74 72 fBlindPixelIdx.AddAt(idx,nr); } 75 73 void SetExtractionType( const ExtractionType_t typ=kAmplitude ); 76 void SetFirst ( const Byte_t first=fgFirst ) { fFirst = first; }77 void SetLast ( const Byte_t last =fgLast ) { fLast = last; }78 74 void SetNSBFilterLimit( const Int_t lim=fgNSBFilterLimit ) { fNSBFilterLimit = lim; } 75 void SetModified ( const Bool_t b=kTRUE) { fModified = b; } 76 77 void SetNumBlindPixels( const Int_t num=fgNumBlindPixels ) { fNumBlindPixels = num; } 78 79 79 void SetRange ( const Byte_t hifirst=0, const Byte_t hilast=0, 80 80 const Byte_t lofirst=0, const Byte_t lolast=0 );
Note:
See TracChangeset
for help on using the changeset viewer.