Changeset 9343 for trunk/MagicSoft/Mars/mjobs/MJSpectrum.cc
- Timestamp:
- 02/15/09 23:12:04 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/mjobs/MJSpectrum.cc
r9335 r9343 64 64 65 65 // Spectrum 66 #include "../mhflux/MAlphaFitter.h" 67 #include "../mhflux/MHAlpha.h" 68 #include "../mhflux/MHCollectionArea.h" 69 #include "../mhflux/MHEnergyEst.h" 70 #include "../mhflux/MMcSpectrumWeight.h" 66 #include "MAlphaFitter.h" 67 #include "MHAlpha.h" 68 #include "MHCollectionArea.h" 69 #include "MHEnergyEst.h" 70 #include "MMcSpectrumWeight.h" 71 #include "MHEffectiveOnTime.h" 71 72 72 73 // Eventloop … … 91 92 MJSpectrum::MJSpectrum(const char *name, const char *title) 92 93 : fCutQ(0), fCut0(0),fCut1(0), fCut2(0), fCut3(0), fCutS(0), 93 fEstimateEnergy(0), fCalcHadronness(0), fCalcDisp(0), fForceTheta(kFALSE) 94 fEstimateEnergy(0), fCalcHadronness(0), fCalcDisp(0), 95 fForceTheta(kFALSE), fForceRunTime(kFALSE), fForceOnTimeFit(kFALSE) 94 96 { 95 97 fName = name ? name : "MJSpectrum"; … … 296 298 return -1; 297 299 300 // We don't have to proceed. We later overwrite the result anyway 301 if (fForceOnTimeFit) 302 return 0; 303 298 304 const Double_t ufl = vstime->GetBinContent(0); 299 305 const Double_t ofl = vstime->GetBinContent(vstime->GetNbinsX()+1); … … 750 756 MFillH fill2(Form("HistE [%s]", cls.Data()), "", "FillHistE"); 751 757 758 // Fill a new MHEffectiveOnTime. It can either be used to 759 // re-calculate the on-time or just for manual cross check 760 MFillH fillT("MHEffectiveOnTime", "MTime", "FillOnTime"); 761 fillT.SetNameTab("OnTime"); 762 752 763 MFDataMember f0("DataType.fVal", '<', 0.5, "FilterOffData"); 753 764 MFDataMember f1("DataType.fVal", '>', 0.5, "FilterOnData"); … … 755 766 fill1.SetFilter(&f0); 756 767 fill2.SetFilter(&f1); 768 fillT.SetFilter(&f1); 757 769 758 770 tlist.AddToList(&read); 759 771 //tlist.AddToList(&taskenv0); // not necessary, stored in file! 760 772 //tlist.AddToList(&taskenv1); // not necessary, stored in file! 773 tlist.AddToList(&f1); 774 tlist.AddToList(&fillT); 761 775 tlist.AddToList(fCutS); 762 776 tlist.AddToList(&taskenv2); 763 777 tlist.AddToList(&f0); 764 tlist.AddToList(&f1);765 778 tlist.AddToList(&fill1); 766 779 tlist.AddToList(&fill2); … … 1545 1558 // Read from the ganymed file 1546 1559 TH1D htheta, size; 1547 constFloat_t ontime = ReadInput(plist, htheta, size);1560 Float_t ontime = ReadInput(plist, htheta, size); 1548 1561 if (ontime<0) 1549 1562 { … … 1562 1575 } 1563 1576 plist.AddToList(&bins2); // For later use in MC processing 1577 1578 // -------------- Fill excess events versus energy --------------- 1579 1580 TH1D excess; 1581 1582 if (fForceOnTimeFit) 1583 { 1584 // Refill excess histogram to determine the excess events 1585 // If we use the eff. on-time fit we have to loop over the data first 1586 // This is not really desired, because if something is wrong with 1587 // the Monte Carlos the program runs quite long before it fails 1588 if (!Refill(plist, excess)) 1589 return kFALSE; 1590 1591 // Print the setup and result of the MAlphaFitter, print used cuts 1592 PrintSetup(fit); 1593 1594 // ------------ On user request redo eff. on-time fit ------------ 1595 const MHEffectiveOnTime *htime = (MHEffectiveOnTime*)plist.FindObject("MHEffectiveOnTime"); 1596 if (!htime) 1597 { 1598 // This should never happen, bt you never know 1599 *fLog << err; 1600 *fLog << "ERROR - Use of new effective on-time fit requested for on-time determination," << endl; 1601 *fLog << " but MHEffectiveOnTime not found in parameter list... aborting." << endl; 1602 return kFALSE; 1603 } 1604 1605 const TH1D &h = htime->GetHEffOnTheta(); 1606 /* 1607 if (!htime->IsConsistent() || h.GetNbinsX()!=htheta.GetNbinsX()) 1608 { 1609 *fLog << err << "ERROR - Effective on-time from newly filles MHEffectiveOnTime (Tab='OnTime) invalid... aborting." << endl; 1610 return kFALSE; 1611 }*/ 1612 1613 *fLog << inf; 1614 *fLog << "Using eff. on-time from new MHEffectiveOnTime (see also 'OnTime')" << endl; 1615 *fLog << " Orig. value: " << ontime << "s" << endl; 1616 1617 // Copy ontime from newly filled and fitted eff on-time histogram 1618 ontime = htime->GetEffOnTime(); 1619 1620 *fLog << " New value: " << ontime << "s" << endl; 1621 1622 h.Copy(htheta); // Copy contents of newly filled hist into on-time vs. theta 1623 htheta.SetName("Theta"); // Copy overwrites the name needed in DisplayResult 1624 htheta.SetDirectory(0); // Remove from global directory added by SetName 1625 } 1626 1627 // --------------------------------------------------------------- 1564 1628 1565 1629 // Initialize weighting to a new spectrum as defined in the resource file … … 1612 1676 return kFALSE; 1613 1677 1614 // -------------- Fill excess events versus energy ---------------1615 1616 1678 // Refill excess histogram to determine the excess events 1617 TH1D excess; 1618 if (!Refill(plist, excess)) 1619 return kFALSE; 1620 1621 // Print the setup and result of the MAlphaFitter, print used cuts 1622 PrintSetup(fit); 1623 1679 if (!fForceOnTimeFit) 1680 { 1681 if (!Refill(plist, excess)) 1682 return kFALSE; 1683 1684 // Print the setup and result of the MAlphaFitter, print used cuts 1685 PrintSetup(fit); 1686 } 1624 1687 1625 1688 // ------------------------- Final loop -------------------------- … … 1768 1831 fillsp.SetWeight(); 1769 1832 1770 // Try to find the class used to determine the signal!1771 1833 // FIXME: To be done: A task checking the lower 1% after the lower 1772 1834 // energy limit! … … 1789 1851 return kFALSE; 1790 1852 par->SetVal(2); 1853 1854 // Not really necessary but for sanity 1855 TObject *cam = plist.FindObject("MSrcPosCam"); 1856 if (cam) 1857 cam->Clear(); 1791 1858 1792 1859 tlist2.AddToList(&read);
Note:
See TracChangeset
for help on using the changeset viewer.