- Timestamp:
- 05/04/06 08:26:21 (19 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/mbase/MTaskList.cc
r7685 r7688 338 338 // -------------------------------------------------------------------------- 339 339 // 340 // Add all objects in list to the tasklist after task where. If some of 341 // them do not inherit from MTask return kFALSE, also if AddToListAfter 342 // returns an error for one of the tasks 343 // 344 Bool_t MTaskList::AddToListAfter(const TList &list, const MTask *where, const char *tType) 345 { 346 TIter Next(&list); 347 TObject *obj=0; 348 while ((obj=Next())) 349 { 350 if (!obj->InheritsFrom(MTask::Class())) 351 { 352 *fLog << err << "ERROR - Object " << obj->GetName() << " doesn't inherit from MTask..." << endl; 353 return kFALSE; 354 } 355 356 if (!AddToListAfter(static_cast<MTask*>(obj), where, tType)) 357 return kFALSE; 358 359 where = static_cast<MTask*>(obj); 360 } 361 return kTRUE; 362 } 363 364 // -------------------------------------------------------------------------- 365 // 366 // Add all objects in list to the tasklist before task where. If some of 367 // them do not inherit from MTask return kFALSE, also if AddToListBefore 368 // returns an error for one of the tasks 369 // 370 Bool_t MTaskList::AddToListBefore(const TList &list, const MTask *where, const char *tType) 371 { 372 TIter Next(&list); 373 TObject *obj=0; 374 while ((obj=Next())) 375 { 376 if (!obj->InheritsFrom(MTask::Class())) 377 { 378 *fLog << err << "ERROR - Object " << obj->GetName() << " doesn't inherit from MTask..." << endl; 379 return kFALSE; 380 } 381 382 if (!AddToListBefore(static_cast<MTask*>(obj), where, tType)) 383 return kFALSE; 384 } 385 return kTRUE; 386 } 387 388 // -------------------------------------------------------------------------- 389 // 340 390 // Find an object in the list. 341 391 // 'name' is the name of the object you are searching for. … … 913 963 // -------------------------------------------------------------------------- 914 964 // 965 // Removes all task of the TList from the tasklist. Returns kFALSE if any 966 // of the objects was not an MTask or not found in the list. 967 // 968 Bool_t MTaskList::RemoveFromList(const TList &list) 969 { 970 Bool_t rc = kTRUE; 971 972 TIter Next(&list); 973 TObject *obj=0; 974 while ((obj=Next())) 975 { 976 if (!obj->InheritsFrom(MTask::Class())) 977 { 978 *fLog << err << "ERROR - Object " << obj->GetName() << " doesn't inherit from MTask..." << endl; 979 rc = kFALSE; 980 continue; 981 } 982 983 if (!RemoveFromList(static_cast<MTask*>(obj))) 984 rc = kFALSE; 985 } 986 return rc; 987 } 988 989 // -------------------------------------------------------------------------- 990 // 915 991 // Find an object with the same name in the list and replace it with 916 992 // the new one. If the kIsOwner flag is set and the object was not -
trunk/MagicSoft/Mars/mbase/MTaskList.h
r7685 r7688 48 48 Bool_t AddToList(MTask *task, const char *tType="All"); 49 49 Bool_t AddToList(const TList &list, const char *tType="All"); 50 Bool_t AddToListAfter(const TList &list, const MTask *where, const char *tType="All"); 51 Bool_t AddToListBefore(const TList &list, const MTask *where, const char *tType="All"); 50 52 51 53 void SetSerialNumber(Byte_t num); … … 53 55 Bool_t Replace(MTask *obj); 54 56 Bool_t RemoveFromList(MTask *task); 57 Bool_t RemoveFromList(const TList &list); 55 58 56 59 TObject *FindObject(const char *name) const; -
trunk/MagicSoft/Mars/mhflux/MMcSpectrumWeight.cc
r7535 r7688 19 19 ! Author(s): Marcos Lopez 10/2003 <mailto:marcos@gae.ucm.es> 20 20 ! 21 ! Copyright: MAGIC Software Development, 2000-200 521 ! Copyright: MAGIC Software Development, 2000-2006 22 22 ! 23 23 ! … … 26 26 ////////////////////////////////////////////////////////////////////////////// 27 27 // 28 // MMc WeightEnergySlopeCalc28 // MMcSpectrumWeight 29 29 // 30 30 // Change the spectrum of the MC showers simulated with Corsika (a power law) … … 104 104 AddToBranchList("MMcEvt.fEnergy"); 105 105 106 fNameWeight = "MWeight"; 107 fNameMcEvt = "MMcEvt"; 108 109 fNewSlope = -1; 110 fOldSlope = -1; 111 112 fEnergyMin = -1; 113 fEnergyMax = -2; 114 115 fNorm = 1; 106 fNameWeight = "MWeight"; 107 fNameMcEvt = "MMcEvt"; 108 109 fNewSlope = -1; 110 fOldSlope = -1; 111 112 fEnergyMin = -1; 113 fEnergyMax = -2; 114 115 fNorm = 1; 116 fNormEnergy = 1; 116 117 117 118 fAllowChange = kFALSE; … … 235 236 // Return the formula to calculate weights. 236 237 // Is is compiled by 237 // o = integral(fEnergyMin, fEnergyMax, GetFormulaSpecOldX()); 238 // n = integral(fEnergyMin, fEnergyMax, GetFormulaSpecNewX()); 239 // 240 // result: fNorm*o/n*GetFormulaNewSpec()/GetFormulaOldSpec() 238 // o1 = integral(fEnergyMin, fEnergyMax, GetFormulaSpecOldX()); 239 // n1 = integral(fEnergyMin, fEnergyMax, GetFormulaSpecNewX()); 240 // o2 = CalcSpecOld(fNormEnergy); 241 // n2 = CalcSpecNew(fNormEnergy); 242 // 243 // result (fNormEnergy<0): 244 // fNorm*o1/n1*GetFormulaNewSpec()/GetFormulaOldSpec() 245 // 246 // result (fNormEnergy>0): 247 // fNorm*o2/n2*GetFormulaNewSpec()/GetFormulaOldSpec() 241 248 // 242 249 // fNorm is 1 by default but can be overwritten using SetNorm() … … 254 261 return Form("%.16f", fNorm); 255 262 256 const Double_t iold = GetSpecOldIntegral();257 const Double_t inew = GetSpecNewIntegral();263 const Double_t iold = fNormEnergy<0 ? GetSpecOldIntegral() : CalcSpecOld(fNormEnergy); 264 const Double_t inew = fNormEnergy<0 ? GetSpecNewIntegral() : CalcSpecNew(fNormEnergy); 258 265 259 266 const Double_t norm = fNorm*iold/inew; … … 282 289 TF1 funcold("Dummy", GetFormulaSpecOldX()); 283 290 return funcold.Integral(fEnergyMin, fEnergyMax); 291 } 292 293 // --------------------------------------------------------------------------- 294 // 295 // Returns the value of GetFormulaSpecNewX() at the energy e describing 296 // the destination spectrum 297 // 298 Double_t MMcSpectrumWeight::CalcSpecNew(Double_t e) const 299 { 300 TF1 funcnew("Dummy", GetFormulaSpecNewX()); 301 return funcnew.Eval(e); 302 } 303 304 // --------------------------------------------------------------------------- 305 // 306 // Returns the value of GetFormulaSpecOldX() at the energy e describing 307 // the simulated spectrum 308 // 309 Double_t MMcSpectrumWeight::CalcSpecOld(Double_t e) const 310 { 311 TF1 funcnew("Dummy", GetFormulaSpecOldX()); 312 return funcnew.Eval(e); 284 313 } 285 314 … … 392 421 *fLog << " New spectral slope: " << fNewSlope << endl; 393 422 *fLog << " User normalization: " << fNorm << endl; 423 *fLog << " Spectra are normalized: " << (fNormEnergy<0?"by integral":Form("at %.1fGeV", fNormEnergy)) << endl; 394 424 *fLog << " Old Spectrum: " << GetFormulaSpecOldX() << " (I=" << GetSpecOldIntegral() << ")" << endl; 395 425 *fLog << " New Spectrum: " << GetFormulaSpecNewX() << " (I=" << GetSpecNewIntegral() << ")" << endl; … … 446 476 // 447 477 // Read the setup from a TEnv, eg: 448 // MMcSpectrumWeight.NewSlope: -2.6 449 // MMcSpectrumWeight.Norm: 1.0 450 // MMcSpectrumWeight.Formula: pow(X, -2.6) 478 // MMcSpectrumWeight.NewSlope: -2.6 479 // MMcSpectrumWeight.Norm: 1.0 480 // MMcSpectrumWeight.NormEnergy: 200 481 // MMcSpectrumWeight.Formula: pow(X, -2.6) 451 482 // 452 483 Int_t MMcSpectrumWeight::ReadEnv(const TEnv &env, TString prefix, Bool_t print) … … 463 494 SetNorm(GetEnvValue(env, prefix, "Norm", fNorm)); 464 495 } 496 if (IsEnvDefined(env, prefix, "NormEnergy", print)) 497 { 498 rc = kTRUE; 499 SetNormEnergy(GetEnvValue(env, prefix, "NormEnergy", fNormEnergy)); 500 } 465 501 if (IsEnvDefined(env, prefix, "Formula", print)) 466 502 { -
trunk/MagicSoft/Mars/mhflux/MMcSpectrumWeight.h
r7174 r7688 40 40 41 41 Double_t fNorm; // Normalization constant (additional normalization constant) 42 Double_t fNormEnergy; // Energy at which the spectra are normalized (default -1 means the integral is used) 42 43 43 44 TString fFormula; // Text Formula for new spectrum: eg. "pow(MMcEvt.fEnergy, -2.0)" … … 66 67 void SetNewSlope(Double_t s=-1) { fNewSlope = s; } 67 68 void SetNorm(Double_t s=1) { fNorm = s; } 69 void SetNormEnergy(Double_t s=1) { fNormEnergy = s; } 68 70 void SetFormula(const char *f="") { fFormula = f; } 69 71 void SetEnergyRange(Double_t min=-2, Double_t max=-1) { fEnergyMin=min; fEnergyMax=max; } … … 71 73 void SetWeightsZd(TH1 *h=0) { fWeightsZd = h; } 72 74 void SetWeightsSize(TH1D *h=0); 75 73 76 Bool_t Set(const MMcCorsikaRunHeader &h); 74 77 … … 85 88 Double_t GetSpecOldIntegral() const; 86 89 90 Double_t CalcSpecNew(Double_t e) const; 91 Double_t CalcSpecOld(Double_t e) const; 92 87 93 Double_t GetEnergyMin() const { return fEnergyMin; } 88 94 Double_t GetEnergyMax() const { return fEnergyMax; }
Note:
See TracChangeset
for help on using the changeset viewer.