Changeset 6403
- Timestamp:
- 02/12/05 15:56:23 (20 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/Changelog
r6396 r6403 26 26 * mtemp/mpadova/macros/wobblemap.C 27 27 - Added. Macro to do some studies on wobble mode data. 28 29 * macros/mccalibrate.C 30 - Added option to divide the output in a train and a test sample. 31 Included in output new container MMcEvtBasic (if found in input 32 files) for later use in effective areas calculations. 33 34 * macros/starmc2.C 35 - Added writing out of new container MMcEvtBasic. Removed 36 possibility of splitting output in train and test samples, since 37 this has now to be done in mccalibrate.C to make possible that 38 the tree OriginalMC containing MMcEvtBasic has all the original 39 MC events (and only those) from which the events present in the 40 Events tree derive. 41 42 * macros/starmc.C 43 - Changed a couple of wrong "." by "->" in function calls. Changed 44 default tail cuts. 45 28 46 29 47 2005/02/12 Markus Gaug -
trunk/MagicSoft/Mars/macros/mccalibrate.C
r6357 r6403 29 29 // 30 30 // This macro converts raw MC data into calibrated data (photons per pixel) 31 // It optionally divides the output into a train and a test sample 31 32 // 32 33 ///////////////////////////////////////////////////////////////////////////// … … 37 38 { 38 39 // 39 // This is a demonstration program which reads in MC camera files40 // and produces and output with calibrated events (signal in photons41 // for all pixels, in MCerPhotEvtcontainers).40 // This macro reads in MC camera files and produces and output with 41 // calibrated events (signal in photons for all pixels, in MCerPhotEvt 42 // containers). 42 43 // 43 44 … … 47 48 CalibrationFilename = new TString("/users/emc/moralejo/mcdata/Period021_0.73_mirror/gammas_nonoise/Gamma_*root"); // File to be used for the calibration (must be a camera file without added noise) 48 49 49 Char_t* AnalysisFilename = "Gamma_*.root"; // File to be analyzed 50 51 Char_t* OutFilename = "calibrated_gamma.root"; // Output file name 52 53 54 // (other extraction methods can be used) 50 Char_t* AnalysisFilename = "Gamma_zbin*w0.root"; // File to be analyzed 51 52 53 TString* OutFilename1; 54 TString* OutFilename2; 55 56 // Output file names 57 OutFilename1 = new TString("calibrated_gamma_train.root"); 58 OutFilename2 = new TString("calibrated_gamma_test.root"); 59 60 // To get only one output file, just comment out the second 61 // one of the above lines 62 63 64 // 65 // Set signal extractor 66 // 55 67 // MExtractFixedWindowPeakSearch sigextract; 56 68 // sigextract.SetWindows(6, 6, 4); 57 69 // 58 70 MExtractTimeAndChargeDigitalFilter sigextract; 59 71 sigextract.SetNameWeightsFile("/users/emc/moralejo/Mars/msignal/MC_weights.dat"); … … 100 112 101 113 MPointingPosCalc pointcalc; 102 // Creates MPointingPos object and fill it with the telescope orientation103 // information taken from MMcEvt.114 // Creates MPointingPos object and fills it with the telescope 115 // orientation information taken from MMcEvt. 104 116 105 117 MCalibrateData calib; 106 // MCalibrateData transforms signals from ADC counts into photons. In the first 107 // loop it applies a "dummy" calibration supplied by MMcCalibrationUpdate, just 108 // to equalize inner and outer pixels. At the end of the first loop, in the 109 // PostProcess of MMcCalibrationCalc (see below) the true calibration constants 118 // 119 // MCalibrateData transforms signals from ADC counts into photons or phe- 120 // (this can be selected anove). In the first loop it applies a "dummy" 121 // calibration supplied by MMcCalibrationUpdate, just to equalize inner 122 // and outer pixels, and calculates SIZE in "equivalent number of inner 123 // ADC counts". At the end of the first loop, in the PostProcess of 124 // MMcCalibrationCalc (see below) the true calibration constants 110 125 // are calculated. 111 126 // 112 127 calib.SetCalibrationMode(MCalibrateData::kFfactor); 113 128 // Do not change the CalibrationMode above for MC...! … … 124 139 // 125 140 126 MHillasCalc hcalc; // Calculates Hillas parameters not dependent on source position.141 MHillasCalc hcalc; 127 142 hcalc.Disable(MHillasCalc::kCalcHillasSrc); 143 // Calculates Hillas parameters not dependent on source position. 128 144 129 145 MMcCalibrationCalc mccalibcalc; 130 146 // Calculates calibration constants to convert from ADC counts to photons. 131 132 147 133 148 tlist.AddToList(&read); 134 149 tlist.AddToList(&geom); 150 151 MF notrigger("MMcTrig.fNumFirstLevel<1"); 152 MContinue skipnotrig(¬rigger); 153 tlist.AddToList(&skipnotrig); 154 135 155 tlist.AddToList(&pcopy); 136 156 tlist.AddToList(&pointcalc); … … 144 164 145 165 // 146 // Open output file: 147 // 148 MWriteRootFile write(OutFilename); // Writes output 149 write.AddContainer("MGeomCam", "RunHeaders"); 150 write.AddContainer("MMcConfigRunHeader", "RunHeaders"); 151 write.AddContainer("MMcCorsikaRunHeader", "RunHeaders"); 152 write.AddContainer("MMcFadcHeader", "RunHeaders"); 153 write.AddContainer("MMcRunHeader", "RunHeaders"); 154 write.AddContainer("MMcTrigHeader", "RunHeaders"); 155 write.AddContainer("MRawRunHeader", "RunHeaders"); 156 157 158 write.AddContainer("MMcEvt", "Events"); 159 write.AddContainer("MMcTrig", "Events"); 160 write.AddContainer("MPointingPos", "Events"); 161 write.AddContainer("MRawEvtHeader", "Events"); 162 write.AddContainer("MCerPhotEvt", "Events"); 163 write.AddContainer("MPedPhotCam", "Events"); 166 // Open output files: 167 // 168 MWriteRootFile write1(OutFilename1->Data()); // Writes output 169 170 MWriteRootFile write1_b(OutFilename1->Data()); 171 write1_b.AddContainer("MMcEvtBasic", "OriginalMC", kFALSE); 172 // Add the MMcEvtBasic container only in case it exists in 173 // the input camera files 174 175 write1.AddContainer("MGeomCam", "RunHeaders"); 176 write1.AddContainer("MMcConfigRunHeader", "RunHeaders"); 177 write1.AddContainer("MMcCorsikaRunHeader", "RunHeaders"); 178 write1.AddContainer("MMcFadcHeader", "RunHeaders"); 179 write1.AddContainer("MMcRunHeader", "RunHeaders"); 180 write1.AddContainer("MMcTrigHeader", "RunHeaders"); 181 write1.AddContainer("MRawRunHeader", "RunHeaders"); 182 183 write1.AddContainer("MMcEvt", "Events"); 184 write1.AddContainer("MMcTrig", "Events"); 185 write1.AddContainer("MPointingPos", "Events"); 186 write1.AddContainer("MRawEvtHeader", "Events"); 187 write1.AddContainer("MCerPhotEvt", "Events"); 188 write1.AddContainer("MPedPhotCam", "Events"); 189 190 if (OutFilename2) 191 { 192 MWriteRootFile write2(OutFilename2->Data()); // Writes output 193 194 MWriteRootFile write2_b(OutFilename2->Data()); 195 write2_b.AddContainer("MMcEvtBasic", "OriginalMC", kFALSE); 196 // Add the MMcEvtBasic container only in case it exists in 197 // the input camera files 198 199 write2.AddContainer("MGeomCam", "RunHeaders"); 200 write2.AddContainer("MMcConfigRunHeader", "RunHeaders"); 201 write2.AddContainer("MMcCorsikaRunHeader", "RunHeaders"); 202 write2.AddContainer("MMcFadcHeader", "RunHeaders"); 203 write2.AddContainer("MMcRunHeader", "RunHeaders"); 204 write2.AddContainer("MMcTrigHeader", "RunHeaders"); 205 write2.AddContainer("MRawRunHeader", "RunHeaders"); 206 207 write2.AddContainer("MMcEvt", "Events"); 208 write2.AddContainer("MMcTrig", "Events"); 209 write2.AddContainer("MPointingPos", "Events"); 210 write2.AddContainer("MRawEvtHeader", "Events"); 211 write2.AddContainer("MCerPhotEvt", "Events"); 212 write2.AddContainer("MPedPhotCam", "Events"); 213 214 // 215 // Divide output in train and test samples, using the event number 216 // (odd/even) to achieve otherwise unbiased event samples: 217 // 218 MF filter1("{MMcEvt.fEvtNumber%2}>0.5"); 219 MF filter2("{MMcEvt.fEvtNumber%2}<0.5"); 220 221 write1.SetFilter(&filter1); 222 write2.SetFilter(&filter2); 223 224 write1_b.SetFilter(&filter1); 225 write2_b.SetFilter(&filter2); 226 } 164 227 165 228 // … … 180 243 mccalibcalc->GetHistADC2PhotEl()->Write(); 181 244 mccalibcalc->GetHistPhot2PhotEl()->Write(); 182 // Writes out the histograms used for calibration. 245 // Writes out the histograms used for calibration. In case of 246 // aslit output in train and test file, this is written only 247 // in the test file for now. 183 248 } 184 249 … … 198 263 tlist.RemoveFromList(&read); 199 264 265 // Now add tasks to write MMcEvtBasic to the OriginalMC tree: 266 tlist.AddToListBefore(&write1_b, &skipnotrig, "All"); 267 if (OutFilename2) 268 tlist.AddToListBefore(&write2_b, &skipnotrig, "All"); 269 270 271 if (OutFilename2) // Add filters to split output in train and test 272 { 273 tlist.AddToListBefore(&filter1, &write1_b, "All"); 274 tlist.AddToListBefore(&filter2, &write1_b, "All"); 275 } 276 200 277 bar.SetWindowName("Writing..."); 201 278 … … 204 281 tlist.RemoveFromList(&mccalibcalc); 205 282 206 tlist.AddToList(&write); // Add task to write output. 283 tlist.AddToList(&write1); 284 tlist.AddToList(&write2); 285 // Add tasks to write the Events and RunHeaders trees to output. 207 286 208 287 if (!evtloop.Eventloop()) -
trunk/MagicSoft/Mars/macros/starmc.C
r6342 r6403 74 74 Float_t accepted_fraction = 1.; 75 75 76 Float_t CleanLev[2] = {5. 75, 3.84};76 Float_t CleanLev[2] = {5., 4.}; 77 77 // User change: tail cuts for image analysis 78 78 … … 175 175 // 176 176 177 MWriteRootFile write1(OutFilename1 .Data()); // Writes output1177 MWriteRootFile write1(OutFilename1->Data()); // Writes output1 178 178 write1.AddContainer("MRawRunHeader", "RunHeaders"); 179 179 write1.AddContainer("MMcRunHeader", "RunHeaders"); … … 197 197 if (OutFilename2) 198 198 { 199 MWriteRootFile write2(OutFilename2 .Data()); // Writes output2199 MWriteRootFile write2(OutFilename2->Data()); // Writes output2 200 200 write2.AddContainer("MRawRunHeader", "RunHeaders"); 201 201 write2.AddContainer("MMcRunHeader", "RunHeaders"); -
trunk/MagicSoft/Mars/macros/starmc2.C
r6357 r6403 38 38 void starmc2() 39 39 { 40 Char_t* AnalysisFilename = "calibrated_gamma.root"; // File to be analyzed 40 Char_t* AnalysisFilename = "calibrated_gamma_train.root"; // File to be analyzed 41 // Char_t* AnalysisFilename = "calibrated_gamma_test.root"; // File to be analyzed 41 42 42 TString* OutFilename1; 43 TString* OutFilename2; 43 TString* OutFilename; 44 44 45 // Change output file names as desired. If you want only one output, comment 46 // out the initialization of OutFilename2: 47 OutFilename1 = new TString("star_gamma_train.root"); // Output file name 1 (test) 48 OutFilename2 = new TString("star_gamma_test.root"); // Output file name 2 (train) 45 // Output file name 46 OutFilename = new TString("star_gamma_train.root"); // Output file name 47 // OutFilename = new TString("star_gamma_test.root"); // Output file name 49 48 50 49 MImgCleanStd clean(4.5, 3.); // Applies tail cuts to image. … … 67 66 // 68 67 // FOR WOBBLE MODE!! Set source position on camera here. 69 // src.SetX(120.); // units: mm 68 // src.SetX(120.); 69 // units: mm. This 120 mm correspond to MC wobble mode w+ for zbin>0 70 // 70 71 71 72 src.SetReadyToSave(); … … 80 81 81 82 read.AddFile(AnalysisFilename); 82 83 83 read.DisableAutoScheme(); 84 84 … … 94 94 // Open output file(s): 95 95 // 96 MWriteRootFile write 1(OutFilename1->Data()); // Writes output96 MWriteRootFile write(OutFilename->Data()); // Writes output 97 97 // 98 // Add MC containers only if they exist. In this way you can also run on real calibrated data. 98 // Add MC containers only if they exist. 99 // In this way you can also run on real calibrated data. 99 100 // 100 write1.AddContainer("MRawRunHeader", "RunHeaders"); 101 write1.AddContainer("MMcRunHeader", "RunHeaders", kFALSE); 102 write1.AddContainer("MGeomCam", "RunHeaders", kFALSE); 103 write1.AddContainer("MMcConfigRunHeader", "RunHeaders", kFALSE); 104 write1.AddContainer("MMcCorsikaRunHeader", "RunHeaders", kFALSE); 105 write1.AddContainer("MMcFadcHeader", "RunHeaders", kFALSE); 106 write1.AddContainer("MMcTrigHeader", "RunHeaders", kFALSE); 101 write.AddContainer("MRawRunHeader", "RunHeaders"); 102 write.AddContainer("MMcRunHeader", "RunHeaders", kFALSE); 103 write.AddContainer("MGeomCam", "RunHeaders", kFALSE); 104 write.AddContainer("MMcConfigRunHeader", "RunHeaders", kFALSE); 105 write.AddContainer("MMcCorsikaRunHeader", "RunHeaders", kFALSE); 106 write.AddContainer("MMcFadcHeader", "RunHeaders", kFALSE); 107 write.AddContainer("MMcTrigHeader", "RunHeaders", kFALSE); 108 109 write.AddContainer("MMcEvt", "Events", kFALSE); 110 write.AddContainer("MPointingPos", "Events", kFALSE); 111 write.AddContainer("MMcTrig", "Events", kFALSE); 112 write.AddContainer("MSrcPosCam", "Events", kFALSE); 113 write.AddContainer("MRawEvtHeader", "Events"); 114 write.AddContainer("MHillas", "Events"); 115 write.AddContainer("MHillasExt", "Events"); 116 write.AddContainer("MHillasSrc", "Events"); 117 write.AddContainer("MImagePar", "Events"); 118 write.AddContainer("MNewImagePar", "Events"); 119 write.AddContainer("MConcentration","Events"); 107 120 108 write1.AddContainer("MMcEvt", "Events", kFALSE); 109 write1.AddContainer("MPointingPos", "Events", kFALSE); 110 write1.AddContainer("MMcTrig", "Events", kFALSE); 111 write1.AddContainer("MSrcPosCam", "Events", kFALSE); 112 write1.AddContainer("MRawEvtHeader", "Events"); 113 write1.AddContainer("MHillas", "Events"); 114 write1.AddContainer("MHillasExt", "Events"); 115 write1.AddContainer("MHillasSrc", "Events"); 116 write1.AddContainer("MImagePar", "Events"); 117 write1.AddContainer("MNewImagePar", "Events"); 118 write1.AddContainer("MConcentration","Events"); 119 120 if (OutFilename2) // Second output file, in case we want a split output 121 { 122 MWriteRootFile write2(OutFilename2->Data()); // Writes output 123 write2.AddContainer("MRawRunHeader", "RunHeaders"); 124 write2.AddContainer("MMcRunHeader", "RunHeaders", kFALSE); 125 write2.AddContainer("MGeomCam", "RunHeaders", kFALSE); 126 write2.AddContainer("MMcConfigRunHeader", "RunHeaders", kFALSE); 127 write2.AddContainer("MMcCorsikaRunHeader", "RunHeaders", kFALSE); 128 write2.AddContainer("MMcFadcHeader", "RunHeaders", kFALSE); 129 write2.AddContainer("MMcTrigHeader", "RunHeaders", kFALSE); 130 131 write2.AddContainer("MMcEvt", "Events", kFALSE); 132 write2.AddContainer("MPointingPos", "Events", kFALSE); 133 write2.AddContainer("MMcTrig", "Events", kFALSE); 134 write2.AddContainer("MSrcPosCam", "Events", kFALSE); 135 write2.AddContainer("MRawEvtHeader", "Events"); 136 write2.AddContainer("MHillas", "Events"); 137 write2.AddContainer("MHillasExt", "Events"); 138 write2.AddContainer("MHillasSrc", "Events"); 139 write2.AddContainer("MImagePar", "Events"); 140 write2.AddContainer("MNewImagePar", "Events"); 141 write2.AddContainer("MConcentration","Events"); 142 143 // 144 // Divide output in train and test samples, using the event number 145 // (odd/even) to achieve otherwise unbiased event samples: 146 // 147 148 MF filter1("{MMcEvt.fEvtNumber%2}>0.5"); 149 MF filter2("{MMcEvt.fEvtNumber%2}<0.5"); 150 151 write1.SetFilter(&filter1); 152 write2.SetFilter(&filter2); 153 154 tlist.AddToList(&filter1); 155 tlist.AddToList(&filter2); 156 } 157 158 159 tlist.AddToList(&write1); 160 161 if (OutFilename2) 162 tlist.AddToList(&write2); 163 121 tlist.AddToList(&write); 164 122 165 123 // … … 178 136 tlist.PrintStatistics(); 179 137 138 //////////////////////////////////////////////////////////////////// 139 // 140 // Second event loop: simply copy the tree MMcEvtBasic in the tree 141 // "OriginalMC" from the input file to the output file: 142 143 MParList plist2; 144 MTaskList tlist2; 145 146 plist2.AddToList(&tlist2); 147 148 MReadMarsFile read2("OriginalMC"); 149 read2.AddFile(AnalysisFilename); 150 read2.DisableAutoScheme(); 151 152 tlist2.AddToList(&read2); 153 154 MWriteRootFile writeOrig(OutFilename->Data(),"UPDATE"); 155 writeOrig.AddContainer("MMcEvtBasic", "OriginalMC", kFALSE); 156 157 tlist2.AddToList(&writeOrig); 158 159 MEvtLoop evtloop2; 160 bar.SetWindowName("Copying OriginalMC tree..."); 161 evtloop2.SetProgressBar(&bar); 162 evtloop2.SetParList(&plist2); 163 164 if (!evtloop2.Eventloop()) 165 return; 166 167 tlist2.PrintStatistics(); 168 180 169 return; 181 170 }
Note:
See TracChangeset
for help on using the changeset viewer.