diff --git a/ctapipe_io_magic/__init__.py b/ctapipe_io_magic/__init__.py
index c65e4cee14bfb387919968a3fb56eab983afee99..ba2665499d07a152d18e747348f74b9adc0ed31f 100644
--- a/ctapipe_io_magic/__init__.py
+++ b/ctapipe_io_magic/__init__.py
@@ -203,7 +203,6 @@ class MAGICEventSource(EventSource):
         data = DataContainer()
         data.meta['origin'] = "MAGIC"
         data.meta['input_url'] = self.input_url
-        data.meta['is_simulation'] = False
 
         # Telescopes with data:
         tels_in_file = ["m1", "m2"]
@@ -229,6 +228,10 @@ class MAGICEventSource(EventSource):
 
                 # Reading event data
                 event_data = self.current_run['data'].get_stereo_event_data(event_i)
+                
+                data.meta['is_simulation'] = event_data['mars_meta']['is_simulation']
+                data.meta['source_ra'] = event_data['mars_meta']['source_ra']
+                data.meta['source_dec'] = event_data['mars_meta']['source_dec']
 
                 # Event counter
                 data.count = counter
@@ -314,7 +317,6 @@ class MAGICEventSource(EventSource):
         data = DataContainer()
         data.meta['origin'] = "MAGIC"
         data.meta['input_url'] = self.input_url
-        data.meta['is_simulation'] = False
 
         # Telescopes with data:
         tels_in_file = ["M1", "M2"]
@@ -350,6 +352,10 @@ class MAGICEventSource(EventSource):
 
                 # Reading event data
                 event_data = self.current_run['data'].get_mono_event_data(event_i, telescope=telescope)
+                
+                data.meta['is_simulation'] = event_data['mars_meta']['is_simulation']
+                data.meta['source_ra'] = event_data['mars_meta']['source_ra']
+                data.meta['source_dec'] = event_data['mars_meta']['source_dec']
 
                 # Event counter
                 data.count = counter
@@ -433,7 +439,6 @@ class MAGICEventSource(EventSource):
         data = DataContainer()
         data.meta['origin'] = "MAGIC"
         data.meta['input_url'] = self.input_url
-        data.meta['is_simulation'] = False
 
         # Telescopes with data:
         tels_in_file = ["M1", "M2"]
@@ -469,6 +474,10 @@ class MAGICEventSource(EventSource):
 
                 # Reading event data
                 event_data = self.current_run['data'].get_pedestal_event_data(event_i, telescope=telescope)
+                
+                data.meta['is_simulation'] = event_data['mars_meta']['is_simulation']
+                data.meta['source_ra'] = event_data['mars_meta']['source_ra']
+                data.meta['source_dec'] = event_data['mars_meta']['source_dec']
 
                 # Event counter
                 data.count = counter
@@ -676,9 +685,10 @@ class MarsDataRun:
         event_data['air_humidity'] = scipy.array([])
         event_data['air_temperature'] = scipy.array([])
         event_data['badpixelinfo'] = []
+        event_data['mars_meta'] = []
 
         # run-wise meta information (same for all events)
-        event_data['mars_meta'] = dict()
+        mars_meta = dict()
         
         event_data['file_edges'] = [0]
 
@@ -704,6 +714,9 @@ class MarsDataRun:
         
         weather_array_list = ['MTimeWeather.fMjd', 'MTimeWeather.fTime.fMilliSec', 'MTimeWeather.fNanoSec',
                               'MReportWeather.fPressure', 'MReportWeather.fHumidity', 'MReportWeather.fTemperature']
+        
+        metainfo_array_list = ['MRawRunHeader.fRunNumber', 'MRawRunHeader.fRunType', 'MRawRunHeader.fSubRunIndex',
+                               'MRawRunHeader.fSourceRA', 'MRawRunHeader.fSourceDEC', 'MRawRunHeader.fTelescopeNumber']
 
         for file_name in file_list:
 
@@ -717,8 +730,27 @@ class MarsDataRun:
             trigger_pattern = events[b'MTriggerPattern.fPrescaled']
             stereo_event_number = events[b'MRawEvtHeader.fStereoEvtNumber']
 
+            # Reading meta information:
+            meta_info = input_file['RunHeaders'].arrays(metainfo_array_list)
+            
+            mars_meta['number'] = int(meta_info[b'MRawRunHeader.fRunNumber'][0])
+            mars_meta['number_subrun'] = int(meta_info[b'MRawRunHeader.fSubRunIndex'][0])
+            mars_meta['source_ra'] = meta_info[b'MRawRunHeader.fSourceRA'][0] / seconds_per_hour * degrees_per_hour * u.deg
+            mars_meta['source_dec'] = meta_info[b'MRawRunHeader.fSourceDEC'][0] / seconds_per_hour * u.deg
+            mars_meta['tel'] = int(meta_info[b'MRawRunHeader.fTelescopeNumber'][0])
+            is_simulation = int(meta_info[b'MRawRunHeader.fRunType'][0])
+            if is_simulation == 0:
+                is_simulation = False
+            elif is_simulation == 256:
+                is_simulation = True
+            else:
+                msg = "Run type (Data or MC) of MAGIC data file not recognised."
+                self.log.error(msg)
+                raise
+            mars_meta['is_simulation'] = is_simulation
+
             # Reading the info only contained in real data
-            try:
+            if is_simulation == False:
                 badpixelinfo = input_file['RunHeaders']['MBadPixelsCam.fArray.fInfo'].array(uproot.asjagged(uproot.asdtype(np.int32))).flatten().reshape((4, 1183), order='F')
                 # now we have 3 axes:
                 # 1st axis: Unsuitable pixels
@@ -727,16 +759,9 @@ class MarsDataRun:
                 # Each axis cointains a 32bit integer encoding more information about the specific problem, see MARS software, MBADPixelsPix.h
                 # Here, we however discard this additional information and only grep the "unsuitable" axis.
                 badpixelinfo = badpixelinfo[1].astype(bool)
-            except:
+            else:
                 badpixelinfo = np.zeros(1183)
 
-            # Reading meta information:
-            event_data['mars_meta']['number'] = int(input_file['RunHeaders']['MRawRunHeader.fRunNumber'].array()[0])
-            event_data['mars_meta']['number_subrun'] = int(input_file['RunHeaders']['MRawRunHeader.fSubRunIndex'].array()[0])
-            event_data['mars_meta']['source_ra'] = input_file['RunHeaders']['MRawRunHeader.fSourceRA'].array()[0] / seconds_per_hour * degrees_per_hour * u.deg
-            event_data['mars_meta']['source_dec'] = input_file['RunHeaders']['MRawRunHeader.fSourceDEC'].array()[0] / seconds_per_hour * u.deg
-            event_data['mars_meta']['tel'] = int(input_file['RunHeaders']['MRawRunHeader.fTelescopeNumber'].array()[0])
-
             # Computing the event arrival time
             mjd = events[b'MTime.fMjd']
             millisec = events[b'MTime.fTime.fMilliSec']
@@ -828,6 +853,7 @@ class MarsDataRun:
             event_data['charge'].append(charge)
             event_data['arrival_time'].append(arrival_time)
             event_data['badpixelinfo'].append(badpixelinfo)
+            event_data['mars_meta'].append(mars_meta)
             event_data['trigger_pattern'] = scipy.concatenate((event_data['trigger_pattern'], trigger_pattern))
             event_data['stereo_event_number'] = scipy.concatenate((event_data['stereo_event_number'], stereo_event_number))
             event_data['pointing_zd'] = scipy.concatenate((event_data['pointing_zd'], pointing_zd))
@@ -1073,7 +1099,8 @@ class MarsDataRun:
         event_data['mjd'] = self.event_data[telescope]['MJD'][event_id]
         event_data['air_pressure'] = self.event_data[telescope]['air_pressure'][event_id]
         event_data['air_humidity'] = self.event_data[telescope]['air_humidity'][event_id]
-        event_data['air_temperature'] = self.event_data[telescope]['air_temperature'][event_id]
+        event_data['air_temperature'] = self.event_data[telescope]['air_temperature'][event_id]               
+        event_data['mars_meta'] = self.event_data[telescope]['mars_meta'][file_num]
 
         return event_data
 
@@ -1148,6 +1175,7 @@ class MarsDataRun:
         event_data['air_pressure'] = self.event_data['M1']['air_pressure'][m1_id]
         event_data['air_humidity'] = self.event_data['M1']['air_humidity'][m1_id]
         event_data['air_temperature'] = self.event_data['M1']['air_temperature'][m1_id]
+        event_data['mars_meta'] = self.event_data['M1']['mars_meta'][m1_file_num]
 
         return event_data
 
@@ -1203,6 +1231,7 @@ class MarsDataRun:
         event_data['mjd'] = self.event_data[telescope]['MJD'][event_id]
         event_data['air_pressure'] = self.event_data[telescope]['air_pressure'][event_id]
         event_data['air_humidity'] = self.event_data[telescope]['air_humidity'][event_id]
-        event_data['air_temperature'] = self.event_data[telescope]['air_temperature'][event_id]
+        event_data['air_temperature'] = self.event_data[telescope]['air_temperature'][event_id]                
+        event_data['mars_meta'] = self.event_data[telescope]['mars_meta'][file_num]
 
         return event_data