Changeset 9378
- Timestamp:
- 03/03/09 11:19:46 (16 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 18 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/Changelog
r9377 r9378 18 18 19 19 -*-*- END OF LINE -*-*- 20 2009/03/03 Thomas Bretz 21 22 * ceres.rc: 23 - added some more infomation 24 - updated paths 25 26 * mcorsika/MCorsikaRunHeader.[h,cc]: 27 - added atmospheric layers 28 - added interpretation of new XSCATT/YSCATT in newer corsikas 29 30 * msim/MSimAtmosphere.[h,cc]: 31 - changed path 32 - MAtmosphere doesn't search for any files per default anymore 33 - changed atmopsheric layers to the ones fitted by Corsika 34 - added possibility to change input files to ReadEnv 35 36 * msimcamera/MSimCalibrationSignal.cc: 37 - don't create a camera geometry yourself 38 39 * resmc/atmosphere-aerosols.txt, resmc/atmosphere-ozone.txt, 40 resmc/ct1-pde.txt, resmc/dwarf-apdmap.txt, resmc/dwarf-cones.txt, 41 resmc/dwarf-pde-gapd.txt, resmc/dwarf-reflectivity.txt, 42 resmc/dwarf-reflector.txt, resmc/magic-cones-inner.txt, 43 resmc/magic-pde.txt, resmc/magic-reflectivity.txt, 44 resmc/magic-reflector-chessboard.txt, resmc/magic-reflector.txt, 45 resmc/magic-trigger-1NN.txt, resmc/magic-trigger-2NN.txt, 46 resmc/magic-trigger-3NN.txt, resmc/magic-trigger-4NN.txt: 47 - added 48 49 50 20 51 2009/03/02 Daniela Dorner 21 52 -
trunk/MagicSoft/Mars/ceres.rc
r9368 r9378 52 52 # BinningDist.Raw: 100 0 2.5 53 53 # BinningDistC.Raw: 100 0 2.5 54 # BinningThreshold.Raw: 35 0.9 90000 log 55 # BinningEnergyEst.Raw: 100 0.9 90000 log 54 56 55 57 … … 73 75 74 76 # ------------------------------------------------------------------------- 75 # Here you can control the poiting of the telescope. 76 # To switch on off-target observations set a value for the distance >0. 77 # Whether they are randomly disributed (<0) or at a fixed phi can also 78 # be decided. Note, that this is options are ignored in the case 79 # a view-cone was used. (All valued given in degree) 80 # ------------------------------------------------------------------------- 81 77 # Some setup for the atmosphere. The default should be well suited. 78 # ------------------------------------------------------------------------- 79 #MSimAtmosphere.FileAerosols: resmc/atmopshere-aerosols.txt 80 #MSimAtmosphere.FileOzone: resmc/atmopshere-ozone.txt 81 82 83 # ------------------------------------------------------------------------- 84 # Here you can control the poiting of the telescope. To switch on 85 # off-target observations set a value for the distance !=0 [deg]. 86 # For details see MSimPointingPos 87 # ------------------------------------------------------------------------- 82 88 #MSimPointingPos.OffTargetDistance: 0.4 83 89 #MSimPointingPos.OffTargetPhi: -1 … … 91 97 # For the file definition see MReflector::ReadFile 92 98 93 #Reflector.FileName: mreflector/reflector-magic.def94 #Reflector.FileName: mreflector/magic-chessboard.def99 #Reflector.FileName: resmc/magic-reflector.txt 100 #Reflector.FileName: resmc/magic-reflector-chessboard.txt 95 101 # Units mm: ~0.020° 96 102 #Reflector.SetSigmaPSF: 6.0 … … 98 104 #Reflector.SetSigmaPSF: 7.5 99 105 100 Reflector.FileName: mreflector/reflector-dwarf.def106 Reflector.FileName: resmc/dwarf-reflector.txt 101 107 # Units mm: ~0.02° 102 108 #Reflector.SetSigmaPSF: 1.8 … … 115 121 MGeomCam.Constructor: MGeomCamDwarf(209.5, 15, 4.8887); 116 122 117 MSimBundlePhotons.FileName: mreflector/dwarf-apdmap.txt123 MSimBundlePhotons.FileName: resmc/dwarf-apdmap.txt 118 124 119 125 # Set the APD type (1: 30x30 <default>, 2: 60x60) … … 127 133 # Setup the absorption, conversion efficiency and angular acceptance 128 134 # ------------------------------------------------------------------------- 129 MirrorReflectivity.FileName: mreflector/pde-mirror.txt130 PhotonDetectionEfficiency.FileName: mreflector/pde-apd.txt131 ConesAngularAcceptance.FileName: mreflector/dwarf-cones.txt135 MirrorReflectivity.FileName: resmc/dwarf-reflectivity.txt 136 PhotonDetectionEfficiency.FileName: resmc/dwarf-pde-gapd.txt 137 ConesAngularAcceptance.FileName: resmc/dwarf-cones.txt 132 138 133 139 … … 145 151 # evaluated for all pixels not just for the pixels which are 146 152 # later "connected" in the trigger (used in the coincidence map) 147 # MSimTrigger.FileNameRouteAC: inner.txt153 # MSimTrigger.FileNameRouteAC: resmc/magic-trigger-1NN.txt 148 154 149 155 # HEGRA like single pixel above threshold trigger … … 154 160 155 161 # Magic like 2NN trigger (inner 396 pixel) 156 #MSimTrigger.FileNameCoincidenceMap: 2NN-lut-uniq.txt162 #MSimTrigger.FileNameCoincidenceMap: resmc/magic-trigger-2NN.txt 157 163 #MSimTrigger.DiscriminatorThreshold: 7.00 158 164 #MSimTrigger.DigitalSignalLength: 8 … … 160 166 161 167 # Magic like 3NN trigger (inner 396 pixel) 162 MSimTrigger.FileNameCoincidenceMap: 3NN-lut-uniq.txt163 MSimTrigger.DiscriminatorThreshold: 6.0164 MSimTrigger.DigitalSignalLength: 8165 MSimTrigger.CoincidenceTime: 0.5168 #MSimTrigger.FileNameCoincidenceMap: resmc/magic-trigger-3NN.txt 169 #MSimTrigger.DiscriminatorThreshold: 6.0 170 #MSimTrigger.DigitalSignalLength: 8 171 #MSimTrigger.CoincidenceTime: 0.5 166 172 167 173 # Magic like 4NN trigger (inner 396 pixel) 168 #MSimTrigger.FileNameCoincidenceMap: 4NN-lut-uniq.txt174 #MSimTrigger.FileNameCoincidenceMap: resmc/magic-trigger-4NN.txt 169 175 #MSimTrigger.DiscriminatorThreshold: 5.0 170 176 #MSimTrigger.DigitalSignalLength: 8 171 177 #MSimTrigger.CoincidenceTime: 0.5 178 179 MSimTrigger.FileNameRouteAC: resmc/magic-trigger-3NN.txt 180 MSimTrigger.DiscriminatorThreshold: 11000 181 MSimTrigger.DigitalSignalLength: 8 182 MSimTrigger.CoincidenceTime: 0.5 172 183 173 184 IntendedPulsePos.Val: 40 … … 203 214 #MPulseShape.Function.Xmin: -5 204 215 #MPulseShape.Function.Xmax: 45 216 217 # ------------------------------------------------------------------------- 218 # Setup an image cleaning on the pure gamma signal (without noise) 219 # ------------------------------------------------------------------------- 220 221 #MImgCleanStd.CleanLevel1: 6.0 222 #MImgCleanStd.CleanLevel2: 6.0 -
trunk/MagicSoft/Mars/mcorsika/MCorsikaRunHeader.cc
r9362 r9378 37 37 // + Float_t fMagneticFieldZ 38 38 // + Float_t fMagneticFieldAz 39 // + Float_t fAtmosphericLayers[5] 39 40 // + Float_t fAtmosphericCoeffA[5] 40 41 // + Float_t fAtmosphericCoeffB[5] … … 111 112 fEnergyMax = f[16]; 112 113 113 // 0/10 not supported? 114 // Implemented in CORSIKA Version >= 6.822 115 fImpactMax = -1; 116 117 // CORSIKA scattering in a disc on the ground 118 if (f[246]>0 && f[247]==0) 119 { 120 *fLog << warn << "WARNING - Events scattered in a disc on the ground." << endl; 121 fImpactMax = f[246]; 122 } 123 124 // MMCS scattering in a disc perpendicular to the shower axis 125 if (f[246]==0 && f[247]>0) 126 fImpactMax = f[247]; 127 128 // CORSIKA scattering in a rectangle on the ground 129 if (f[246]>0 && f[247]>0) 130 *fLog << warn << "WARNING - Events scattered in a rectangle on the ground." << endl; 131 132 // Implemented in CORSIKA Version >= 6.822 133 memcpy(fAtmosphericLayers, f+248, 5*4); 114 134 115 135 memcpy(fAtmosphericCoeffA, f+253, 5*4); … … 136 156 // f[93] flag for additinal muon information of particle output file 137 157 // f[145] Muon multiple scattering flag 138 // f[156] altitude of horizontal shower axis139 158 140 159 char evth[4]; … … 176 195 // FIXME: Correct for direction of magnetic field! 177 196 178 // Number of cherenkov detectors in x 179 // Number of cherenkov detectors in y 180 // Grid spacing x 181 // Grid spacing y 182 183 // g[93] angle between array x-direction and magnetic north 197 if (TMath::Nint(g[83])!=1) 198 *fLog << warn << "WARNING - Cherenkov bunch size not 1, but " << g[83] << endl; 199 200 // g[84] Number of cherenkov detectors in x 201 // g[85] Number of cherenkov detectors in y 202 // g[86] Grid spacing x 203 // g[87] Grid spacing y 204 // g[88] Length of detectors in x 205 // g[89] Length of detectors in y 184 206 185 207 fImpactMax = -1; … … 267 289 268 290 *fLog << "MagneticField: X/Z=(" << fMagneticFieldX << "/"; 269 *fLog << fMagneticFieldZ << ")" << UTF8::kMu << "T Az=" << fMagneticFieldAz*TMath::RadToDeg() << "deg(magnetic North w.r.t. North)" << endl;291 *fLog << fMagneticFieldZ << ")" << UTF8::kMu << "T Az=" << fMagneticFieldAz*TMath::RadToDeg() << UTF8::kDeg << " (magnetic North w.r.t. North)" << endl; 270 292 271 293 *fLog << "Spectrum: Slope=" << fSlopeSpectrum << " (" << fEnergyMin << "GeV-" << fEnergyMax << "GeV)" << endl; 272 294 *fLog << "Wavelength: " << fWavelengthMin << "nm - " << fWavelengthMax << "nm" << endl; 273 295 296 if (fImpactMax>0) 297 *fLog << "ImpactMax: " << fImpactMax << "cm" << endl; 274 298 if (fViewConeOuterAngle>0) 275 299 *fLog << "ViewCone: " << fViewConeInnerAngle << UTF8::kDeg << " - " << fViewConeOuterAngle << UTF8::kDeg << endl; … … 303 327 *fLog << " ATMEXT" << GetNumAtmosphericModel(); 304 328 if (Has(kRefraction)) 305 *fLog << " AtmRefraction";329 *fLog << " +Refraction"; 306 330 if (Has(kVolumedet)) 307 331 *fLog << " VOLUMEDET"; … … 312 336 *fLog << endl; 313 337 338 if (HasLayers()) 339 { 340 *fLog << "Atm.Layers: "; 341 for (int i=0; i<5; i++) 342 *fLog << " " << fAtmosphericLayers[i]; 343 } 314 344 *fLog << "Atm.Coeff A: "; 315 345 for (int i=0; i<5; i++) -
trunk/MagicSoft/Mars/mcorsika/MCorsikaRunHeader.h
r9348 r9378 60 60 Float_t fViewConeOuterAngle; // [deg] 61 61 62 Float_t fAtmosphericCoeffA[5]; // [g/cm²] AATM (see Corsika Manual for details) 63 Float_t fAtmosphericCoeffB[5]; // [g/cm²] BATM (see Corsika Manual for details) 64 Float_t fAtmosphericCoeffC[5]; // [cm] CATM (see Corsika Manual for details) 62 Float_t fAtmosphericLayers[5]; // [cm] ATMLAY (see Corsika Manual for details) 63 Float_t fAtmosphericCoeffA[5]; // [g/cm²] AATM (see Corsika Manual for details) 64 Float_t fAtmosphericCoeffB[5]; // [g/cm²] BATM (see Corsika Manual for details) 65 Float_t fAtmosphericCoeffC[5]; // [cm] CATM (see Corsika Manual for details) 65 66 66 67 UInt_t fCerenkovFlag; … … 107 108 108 109 // Preliminary! 110 Bool_t HasLayers() const { return fAtmosphericLayers[4]>0; } 111 112 const Float_t *GetAtmosphericLayers() const { return fAtmosphericLayers; } 109 113 const Float_t *GetAtmosphericCoeffA() const { return fAtmosphericCoeffA; } 110 114 const Float_t *GetAtmosphericCoeffB() const { return fAtmosphericCoeffB; } -
trunk/MagicSoft/Mars/msim/MSimAtmosphere.cc
r9351 r9378 165 165 // the observer 166 166 167 // FIXME: Could be replaced by 0, AtmLay[0]-fAtmLay[3] 168 167 169 const Double_t h[5] = 168 170 { 169 fObsLevel, // 0km170 TMath::Max(fObsLevel, 4e5),// 4km171 1.0e6,// 10km172 4.0e6,// 40km173 1 .0e7// 100km171 fObsLevel, // fObsLevel, // 0km 172 TMath::Max(fObsLevel, 7.75e5), // TMath::Max(fObsLevel, 4e5), // 4km 173 16.5e5, // 10e5, // 10km 174 50.0e5, // 40e5, // 40km 175 105.0e5, // 100e5 // 100km 174 176 }; 175 177 … … 418 420 MAtmosphere(const MCorsikaRunHeader &h) : fAbsCoeffOzone(0), fAbsCoeffAerosols(0) 419 421 { 420 Init(h, "ozone.txt", "aerosols.txt"); 421 } 422 423 MAtmosphere(const char *name1="ozone.txt", const char *name2="aerosols.txt") : fAbsCoeffOzone(0), fAbsCoeffAerosols(0) 424 { 425 InitOzone(name1); 426 InitAerosols(name2); 422 Init(h);//, "ozone.txt", "aerosols.txt"); 423 } 424 425 MAtmosphere(const char *name1=0, const char *name2=0) : fAbsCoeffOzone(0), fAbsCoeffAerosols(0) 426 { 427 if (name1) 428 InitOzone(name1); 429 if (name2) 430 InitAerosols(name2); 427 431 } 428 432 … … 694 698 // 695 699 MSimAtmosphere::MSimAtmosphere(const char* name, const char *title) 696 : fEvt(0), fAtmosphere(0) 700 : fEvt(0), fAtmosphere(0), 701 fFileAerosols("resmc/atmosphere-aerosols.txt"), 702 fFileOzone("resmc/atmosphere-ozone.txt") 697 703 { 698 704 fName = name ? name : "MSimAtmosphere"; … … 753 759 */ 754 760 755 fAtmosphere->Init(*h );761 fAtmosphere->Init(*h, fFileOzone, fFileAerosols); 756 762 757 763 if (!fAtmosphere->IsAllValid()) … … 847 853 // -------------------------------------------------------------------------- 848 854 // 849 // File Name: reflectivity.txt850 // UseTheta: No855 // FileAerosols: resmc/atmosphere-aerosols.txt 856 // FileOzone: resmc/atmosphere-ozone.txt 851 857 // 852 858 Int_t MSimAtmosphere::ReadEnv(const TEnv &env, TString prefix, Bool_t print) 853 859 { 854 860 Bool_t rc = kFALSE; 855 /* 856 if (IsEnvDefined(env, prefix, "File Name", print))861 862 if (IsEnvDefined(env, prefix, "FileAerosols", print)) 857 863 { 858 864 rc = kTRUE; 859 SetFileName(GetEnvValue(env, prefix, "FileName", fFileName));860 } 861 862 if (IsEnvDefined(env, prefix, " UseTheta", print))865 fFileAerosols = GetEnvValue(env, prefix, "FileAerosols", fFileAerosols); 866 } 867 868 if (IsEnvDefined(env, prefix, "FileOzone", print)) 863 869 { 864 870 rc = kTRUE; 865 SetUseTheta(GetEnvValue(env, prefix, "UseTheta", fUseTheta));866 } 867 */ 871 fFileOzone = GetEnvValue(env, prefix, "FileOzone", fFileOzone); 872 } 873 868 874 return rc; 869 875 } -
trunk/MagicSoft/Mars/msim/MSimAtmosphere.h
r9351 r9378 17 17 MAtmosphere *fAtmosphere; //! Instance of class describing atmosphere 18 18 19 TString fFileAerosols; // Name of file with aersole absorption 20 TString fFileOzone; // Name of file with ozone absorption 21 19 22 // MParContainer 20 23 Int_t ReadEnv(const TEnv &env, TString prefix, Bool_t print=kFALSE); … … 29 32 ~MSimAtmosphere(); 30 33 31 // MSimAtmosphere32 33 // TObject34 35 34 ClassDef(MSimAtmosphere, 0) // Simulate the wavelength and height-dependant atmpsheric absorption 36 35 }; -
trunk/MagicSoft/Mars/msimcamera/MSimCalibrationSignal.cc
r9317 r9378 98 98 *fLog << inf << fNameGeomCam << " [MGeomCam] not found..." << endl; 99 99 100 fGeom = (MGeomCam*)pList->Find CreateObj(fNameGeomCam);100 fGeom = (MGeomCam*)pList->FindObject("MGeomCam"); 101 101 if (!fGeom) 102 { 103 *fLog << err << "MGeomCam not found... aborting." << endl; 102 104 return kFALSE; 105 } 103 106 } 104 107
Note:
See TracChangeset
for help on using the changeset viewer.