Changeset 7091 for trunk/MagicSoft/Mars
- Timestamp:
- 05/25/05 16:18:11 (20 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/Changelog
r7090 r7091 21 21 22 22 -*-*- END OF LINE -*-*- 23 INPREP Markus Gaug (2005/05/21) 24 25 * mcalib/MCalibrationChargePix.[h,cc] 26 - allow setting of extractor resolution in CalcReducedSigma() 27 28 * mcalib/MCalibrationChargeCalc.[h,cc] 29 - implement usage of extractor resolution (only if UseExtractorRes 30 is set). 31 32 33 34 2005/05/25 Thomas Bretz 35 36 * callisto.cc, ganymed.cc, mars.cc, merpp.cc, readdaq.cc, 37 readraw.cc, sponde.cc, star.cc: 38 - made the output about the root version clearer 39 40 * mbase/MEvtLoop.cc: 41 - call CallProcess instead of Process for the mail tasklist 42 (this makes sure that all counters are correct) This should 43 NOT be done for Pre/PostProcess 44 45 * mbase/MStatusDisplay.cc: 46 - fixed a possible crash if padsave==NULL 47 48 * mbase/MTask.cc: 49 - initialize fNumExec0 with 0 (this was the reason why the 50 missing CallProcess in MEvtLoop didn't seem to have any effect 51 on the possible printing of the statistics 52 53 * mhflux/MAlphaFitter.cc: 54 - improved output 55 56 * mhflux/MHEffectiveOnTime.cc: 57 - added some eMail from Wolfgang about treating the calibration 58 events to the class description 59 - removed some debug output in Paint() 60 61 * mhflux/MHThetaSq.cc: 62 - replaced \\theta by \\vartheta 63 64 * mhvstime/MHPixVsTime.cc: 65 - fixed a bug found by marcos: the error bars weren't retrieved 66 correctly (instead of fTypeErr fType was requested) 67 68 * mjobs/MJStar.cc: 69 - do not use calibration events for rate and effective-on-time 70 calculation 71 72 * mjobs/MJob.cc: 73 - added some debug output to ExpandPath 74 75 * msignal/MExtractTime.h, msignal/MExtractTimeAndCharge.h, 76 msignal/MExtractor.h: 77 - added Print() to //*MENU* 78 79 80 23 81 2005/05/25 Daniela Dorner 24 82 -
trunk/MagicSoft/Mars/callisto.cc
r7001 r7091 33 33 gLog << " Callisto - MARS V" << MARSVER << endl; 34 34 gLog << " MARS -- CALibrate LIght Signals and Time Offsets" << endl; 35 gLog << " Compiled on <" << __DATE__ << ">" << endl; 36 gLog << " Using ROOT v" << ROOTVER << endl; 35 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 37 36 gLog << "========================================================" << endl; 38 37 gLog << endl; -
trunk/MagicSoft/Mars/ganymed.cc
r7004 r7091 30 30 gLog << " Ganymed - MARS V" << MARSVER << endl; 31 31 gLog << " MARS -- Gammas Are Now Your Most Exciting Discovery" << endl; 32 gLog << " Compiled on <" << __DATE__ << ">" << endl; 33 gLog << " Using ROOT v" << ROOTVER << endl; 32 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 34 33 gLog << "========================================================" << endl; 35 34 gLog << endl; -
trunk/MagicSoft/Mars/mars.cc
r7001 r7091 16 16 17 17 using namespace std; 18 /*19 #if ROOT_VERSION_CODE < ROOT_VERSION(3,10,02)20 #include <TRootGuiFactory.h>21 #include <TPluginManager.h>22 void InitGuiFactory()23 {24 if (gROOT->IsBatch())25 gROOT->SetBatch(kFALSE);26 27 //28 // Must be loaded by hand, because it is not loaded by TGApplication.29 // We could also use TApplication instead, but TApplication doesn't30 // deal with the DISPLAY variable in a convient way.31 //32 TPluginHandler *h;33 if ((h = gROOT->GetPluginManager()->FindHandler("TGuiFactory", "root")))34 {35 if (h->LoadPlugin() == -1)36 return;37 gGuiFactory = (TGuiFactory*)h->ExecPlugin(0);38 }39 }40 #endif41 */42 18 43 19 // ********************************************************************** … … 58 34 gLog << " MARS V" << MARSVER << endl; 59 35 gLog << " Magic Analysis and Reconstruction Software" << endl; 60 gLog << " Compiled on <" << __DATE__ << ">" << endl; 61 gLog << " Using ROOT v" << ROOTVER << endl; 36 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 62 37 gLog << "==================================================" << endl; 63 38 gLog << endl; … … 68 43 gLog << all << endl; 69 44 gLog << "Sorry the usage is:" << endl; 70 gLog << " mars [-h] [-?] [-a0] [-vn]" << endl << endl; 45 gLog << " mars [options]" << endl << endl; 46 gLog << " Options:" << endl; 71 47 gLog.Usage(); 72 48 gLog << " -?/-h: This help" << endl << endl; -
trunk/MagicSoft/Mars/mbase/MEvtLoop.cc
r7071 r7091 475 475 while (1) 476 476 { 477 rc=fTaskList-> Process();477 rc=fTaskList->CallProcess(); 478 478 if (rc!=kTRUE && rc!=kCONTINUE) 479 479 break; … … 487 487 while (dummy--) 488 488 { 489 rc=fTaskList-> Process();489 rc=fTaskList->CallProcess(); 490 490 if (rc!=kTRUE && rc!=kCONTINUE) 491 491 break; -
trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc
r7012 r7091 2673 2673 } 2674 2674 2675 padsav->cd(); 2675 if (padsave) 2676 padsav->cd(); 2676 2677 2677 2678 *fLog << inf << "done." << endl; -
trunk/MagicSoft/Mars/mbase/MTask.cc
r6502 r7091 115 115 MTask::MTask(const char *name, const char *title) 116 116 : fFilter(NULL), fSerialNumber(0), fIsPreprocessed(kFALSE), 117 fStopwatch(0) 117 fStopwatch(0), fNumExec0(0) 118 118 { 119 119 fName = name ? name : "MTask"; -
trunk/MagicSoft/Mars/merpp.cc
r7001 r7091 53 53 gLog << " MERPP - MARS V" << MARSVER << endl; 54 54 gLog << " MARS - Merging and Preprocessing Program" << endl; 55 gLog << " Compiled on <" << __DATE__ << ">" << endl; 56 gLog << " Using ROOT v" << ROOTVER << endl; 55 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 57 56 gLog << "==================================================" << endl; 58 57 gLog << endl; -
trunk/MagicSoft/Mars/mhflux/MAlphaFitter.cc
r7066 r7091 357 357 case kEntries: *fLog << "entries."; break; 358 358 case kIntegral: *fLog << "integral."; break; 359 case kOffRegion: *fLog << "off region .";break;360 case kBackground: *fLog << "background .";break;361 case kLeastSquare: *fLog << "least square ."; break;359 case kOffRegion: *fLog << "off region (intgeral between " << fScaleMin << " and " << fScaleMax << ")"; break; 360 case kBackground: *fLog << "background (integral between " << fBgMin << " and " << fBgMax << ")"; break; 361 case kLeastSquare: *fLog << "least square (N/A)"; break; 362 362 case kUserScale: *fLog << "user def (" << fScaleUser << ")"; break; 363 363 } -
trunk/MagicSoft/Mars/mhflux/MHEffectiveOnTime.cc
r7000 r7091 75 75 // MTimeEffectiveOnTime [MTime] 76 76 // 77 // 78 // ========================================================================== 79 // Dear Colleagues, 80 // 81 // for the case that we are taking calibration events interleaved with 82 // cosmics events the calculation of the effective observation time has to 83 // be modified. I have summarized the proposed procedures in the note at the 84 // end of this message. The formulas have been checked by a simulation. 85 // 86 // Comments are welcome. 87 // 88 // Regards, Wolfgang 89 // -------------------------------------------------------------------------- 90 // Wolfgang Wittek 91 // 2 Dec. 2004 92 // 93 // Calculation of the effective observation time when cosmics and calibration 94 // events are taken simultaneously. 95 // -------------------------------- 96 // 97 // I. Introduction 98 // --------------- 99 // It is planned to take light calibration events (at a certain fixed frequency 100 // lambda_calib) interlaced with cosmics events. The advantages of this 101 // procedure are : 102 // 103 // - the pedestals, which would be determined from the cosmics, could be 104 // used for both the calibration and the cosmics events 105 // 106 // - because calibration and cosmics events are taken quasi simultaneously, 107 // rapid variations (in the order of a few minutes) of base lines and of the 108 // photon/ADC conversion factors could be recognized and taken into account 109 // 110 // The effective observation time T_eff is defined as that time range, within 111 // which the recorded number of events N_cosmics would be obtained under ideal 112 // conditions (only cosmics, no dead time, no calibration events, ...). 113 // 114 // In the absence of calibration events the effective observation time can 115 // be determined from the distribution of time differences 'dt' between 116 // successive cosmics events (see first figure in the attached ps file). 117 // The exponential slope 'lambda' of this distribution is the ideal cosmics 118 // event rate. If 'N_cosmics' is the total number of recorded cosmics events, 119 // T_eff is obtained by 120 // 121 // T_eff = N_cosmics / lambda 122 // 123 // In the case of a finite dead time 'dead', the distribution (for dt > dead) is 124 // still exponential with the same slope 'lambda'. 'lambda' should be determined 125 // in a region of 'dt' which is not affected by the dead time, i.e. at not too 126 // low 'dt'. 127 // 128 // 129 // 130 // II. Problems in the presence of calibration events 131 // -------------------------------------------------- 132 // If calibration events are taken interlaced with cosmics, and if the dead time 133 // is negligible, the distribution of time differences 'dt' between cosmics can 134 // be used for calculating the effective observation time, as if the calibration 135 // events were not present. 136 // 137 // In the case of a non-negligible dead time 'dead', however, the distribution of 138 // time differences between cosmics is distorted, because a cosmics event may be 139 // lost due to the dead time after a calibration event. Even if the time 140 // intervals are ignored which contain a calibration event, 141 // 142 // 143 // ---|---------o--------|---------> t 144 // 145 // cosmics calib cosmics 146 // 147 // <----------------> <==== time interval to be ignored 148 // 149 // 150 // the distribution of 'dt' is still distorted, because there would be no 151 // 'dt' with dt > tau_calib = 1/lambda_calib. The distribution would also be 152 // distorted in the region dt < tau_calib, due to calibration events occuring 153 // shortly after cosmics events. As a result, the slope of the distribution of 154 // 'dt' would not reflect the ideal cosmics event rate (see second figure; the 155 // values assumed in the simulation are lambda = 200 Hz, lambda_calib = 50 156 // Hz, dead = 0.001 sec, total time = 500 sec, number of generated cosmics 157 // events = 100 000). 158 // 159 // 160 // Note also that some calibration events will not be recorded due to the dead 161 // time after a cosmics event. 162 // 163 // 164 // III. Proposed procedures 165 // ------------------------ 166 // 167 // A) The ideal event rate 'lambda' may be calculated from the distribution of 168 // the time difference 'dt_first' between a calibration event and the first 169 // recorded cosmics event after the calibration event. In the region 170 // 171 // dead < dt_first < tau_calib 172 // 173 // the probability distribution of dt_first is given by 174 // 175 // p(dt_first) = c * exp(-lambda*dt_first) 176 // 177 // where c is a normalization constant. 'lambda' can be obtained by a simple 178 // exponential fit to the experimental distribution of dt_first (see third 179 // figure). The fit range should start well above the average value of the dead 180 // time 'dead'. 181 // 182 // 183 // B) One may consider those time intervals between recorded cosmics events, which 184 // are completely contained in the region 185 // 186 // t_calib < t < t_calib + tau_calib 187 // 188 // where t_calib is the time of a recorded calibration event. 189 // 190 // 191 // <--------------- tau_calib -----------> 192 // 193 // 194 // 0 1 2 3 4 5 6 7 8 9 10 195 // --|-o---|-|---|--|-|----|--|---|---|-|----o-|---|-|---------> t 196 // ^ ^ 197 // | | 198 // t_calib t_calib + tau_calib 199 // 200 // 201 // In this example, of the time intervals 0 to 10 only the intervals 1 to 9 202 // should be retained and plotted. The distribution of the length 'dt' of these 203 // intervals in the region 204 // 205 // dead < dt < tau_calib 206 // 207 // is given by 208 // 209 // p(dt) = c * (tau_calib-dt-dead) * exp(-lambda*dt) 210 // 211 // A fit of this expression to the experimental distribution of 'dt' yields 212 // 'lambda' (see fourth figure). For 'dead' an average value of the dead time 213 // should be chosen, and the fit range should end well before dt = tau_calib-dead. 214 // 215 // 216 // Method A has the advantage that the p(dt_first) does not depend on 'dead'. 217 // 'dead' has to be considered when defining the fit range, both in method A and 218 // in method B. In method B the event statistics is larger leading to a smaller 219 // fitted error of 'lambda' than method A (see the figures). 220 // 221 // 222 // The effective observation time is again obtained by 223 // 224 // T_eff = N_cosmics / lambda 225 // 226 // where N_cosmics is the total number of recorded cosmics events. Note that 227 // N_cosmics is equal to 228 // 229 // N_cosmics = N_tot - N_calib 230 // 231 // where N_tot is the total number of recorded events (including the calibration 232 // events) and N_calib is the number of recorded calibration events. 233 // 234 // Note that if time intervals are discarded for the determination of lambda, 235 // the corresponding cosmics events need not and should not be discarded. 236 // 237 // 238 // IV. Procedure if the calibration events are taken in bunches 239 // ------------------------------------------------------------ 240 // In November 2004 the rate of calibration events is not constant. The events 241 // are taken in 200 Hz bunches every second, such that the rate is 200 Hz for 242 // 0.25 sec, followed by a gap of 0.75 sec. Then follows the next 200 Hz bunch. 243 // 244 // In this case it is proposed to consider for the calculation of 'lambda' only 245 // the cosmics events within the gaps of 0.75 sec. For these cosmics events one 246 // of the methods described in III. can be applied. 247 // 248 // 249 // V. Alternative pocedure 250 // ----------------------- 251 // The effective observation time can also be determined from the total 252 // observation time and the total dead time. The latter is written out by the DAQ. 253 // In this case it has to be made sure that the dead time is available in Mars 254 // when the effective observation time is calculated. 255 // 77 256 ////////////////////////////////////////////////////////////////////////////// 78 257 #include "MHEffectiveOnTime.h" … … 646 825 void MHEffectiveOnTime::Paint(Option_t *opt) 647 826 { 648 *fLog << all << "Paint: '" << opt << "'" << endl;649 650 827 TH1D *h=0; 651 828 TPaveStats *st=0; -
trunk/MagicSoft/Mars/mhflux/MHThetaSq.cc
r7064 r7091 69 69 fHist.SetName("Theta"); 70 70 fHist.SetTitle("Theta"); 71 fHist.SetZTitle("\\ theta^{2} [deg^{2}]");71 fHist.SetZTitle("\\vartheta^{2} [deg^{2}]"); 72 72 fHist.SetDirectory(NULL); 73 73 74 74 // Main histogram 75 75 fHistTime.SetName("Theta"); 76 fHistTime.SetXTitle("\\ theta^{2} [deg^{2}]");76 fHistTime.SetXTitle("\\vartheta^{2} [deg^{2}]"); 77 77 fHistTime.SetDirectory(NULL); 78 78 -
trunk/MagicSoft/Mars/mhvstime/MHPixVsTime.cc
r6977 r7091 193 193 if (fTypeErr>=0) 194 194 { 195 evt->GetPixelContent(rms, fIndex, *fCam, fType );195 evt->GetPixelContent(rms, fIndex, *fCam, fTypeErr); 196 196 if (TMath::IsNaN(rms)) 197 197 return kCONTINUE; -
trunk/MagicSoft/Mars/mjobs/MJStar.cc
r7071 r7091 368 368 if (!ismc) 369 369 { 370 tlist2.AddToList(&rate); 371 //tlist2.AddToList(&rate1); 372 tlist2.AddToList(&fillvs); 373 //tlist2.AddToList(&cont1); 374 //tlist2.AddToList(&cont2); 375 tlist2.AddToList(&fill8); 376 tlist2.AddToList(&fill9); 370 tlist2.AddToList(&rate, "Events"); 371 tlist2.AddToList(&fillvs, "Events"); 372 tlist2.AddToList(&fill8, "Events"); 373 tlist2.AddToList(&fill9, "Events"); 377 374 } 378 375 //tlist2.AddToList(&fillb); -
trunk/MagicSoft/Mars/mjobs/MJob.cc
r7013 r7091 304 304 // empty 305 305 if (fname.IsNull()) 306 return fname;306 return ""; 307 307 308 308 // Expand path using environment … … 311 311 // Absolute path 312 312 if (fname[0]=='/') 313 { 314 gLog << dbg << "MJob::ExpandPath - Path " << fname << " is absolute." << endl; 313 315 return fname; 316 } 314 317 315 318 // relative path to file and file could be found 316 319 if (!gSystem->AccessPathName(fname, kFileExists)) 320 { 321 gLog << dbg << "MJob::ExpandPath - Relative path " << fname << " found..." << endl; 317 322 return fname; 323 } 318 324 319 325 // Now check gEnv and MARSSYS. gEnv can overwrite MARSSYS … … 330 336 path += fname; 331 337 338 gLog << dbg << "MJob::ExpandPath - Filename expanded to " << path << endl; 339 332 340 // return new path 333 341 return path; -
trunk/MagicSoft/Mars/msignal/MExtractTime.h
r5734 r7091 31 31 MExtractTime(const char *name=NULL, const char *title=NULL); 32 32 33 void Print(Option_t *o) const; 33 void Print(Option_t *o) const; //*MENU* 34 34 35 35 void SetNameTimeCam ( const char *name=fgNameTimeCam.Data()) { fNameTimeCam = name; } -
trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.h
r6117 r7091 40 40 Byte_t GetLoGainSwitch () const { return fLoGainSwitch; } 41 41 42 void Print(Option_t *o="") const; 42 void Print(Option_t *o="") const; //*MENU* 43 43 44 44 void SetLoGainStartShift( const Float_t f=fgLoGainStartShift ) { fLoGainStartShift = f + fOffsetLoGain; } -
trunk/MagicSoft/Mars/msignal/MExtractor.h
r7043 r7091 89 89 Float_t GetNumLoGainSamples() const { return fNumLoGainSamples; } 90 90 Float_t GetOffsetLoGain() const { return fOffsetLoGain; } 91 Float_t GetResolutionPerPheHiGain() const { return fResolutionPerPheHiGain; } 92 Float_t GetResolutionPerPheLoGain() const { return fResolutionPerPheLoGain; } 91 93 92 94 Bool_t IsNoiseCalculation () const { return fNoiseCalculation; } … … 112 114 } 113 115 114 void Print(Option_t *o="") const; 116 void Print(Option_t *o="") const; //*MENU* 115 117 116 118 ClassDef(MExtractor, 6) // Signal Extractor Base Class -
trunk/MagicSoft/Mars/readdaq.cc
r7001 r7091 39 39 gLog << " ReadDaq - MARS V" << MARSVER << endl; 40 40 gLog << " MARS - Read and print daq data files" << endl; 41 gLog << " Compiled on <" << __DATE__ << ">" << endl; 42 gLog << " Using ROOT v" << ROOTVER << endl; 41 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 43 42 gLog << "==================================================" << endl; 44 43 gLog << endl; -
trunk/MagicSoft/Mars/readraw.cc
r7001 r7091 42 42 gLog << " ReadRaw - MARS V" << MARSVER << endl; 43 43 gLog << " MARS - Read and print raw data files" << endl; 44 gLog << " Compiled on <" << __DATE__ << ">" << endl; 45 gLog << " Using ROOT v" << ROOTVER << endl; 44 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 46 45 gLog << "==================================================" << endl; 47 46 gLog << endl; -
trunk/MagicSoft/Mars/sponde.cc
r7001 r7091 30 30 gLog << " Sponde - MARS V" << MARSVER << endl; 31 31 gLog << " MARS -- SPectrum ON DEmand" << endl; 32 gLog << " Compiled on <" << __DATE__ << ">" << endl; 33 gLog << " Using ROOT v" << ROOTVER << endl; 32 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 34 33 gLog << "========================================================" << endl; 35 34 gLog << endl; -
trunk/MagicSoft/Mars/star.cc
r7001 r7091 30 30 gLog << " Star - MARS V" << MARSVER << endl; 31 31 gLog << " MARS -- STandard Analysis and Reconstruction" << endl; 32 gLog << " Compiled on <" << __DATE__ << ">" << endl; 33 gLog << " Using ROOT v" << ROOTVER << endl; 32 gLog << " Compiled with ROOT v" << ROOTVER << " on <" << __DATE__ ">" << endl; 34 33 gLog << "========================================================" << endl; 35 34 gLog << endl;
Note:
See TracChangeset
for help on using the changeset viewer.