/* ======================================================================== *\ ! ! * ! * This file is part of MARS, the MAGIC Analysis and Reconstruction ! * Software. It is distributed to you in the hope that it can be a useful ! * and timesaving tool in analysing Data of imaging Cerenkov telescopes. ! * It is distributed WITHOUT ANY WARRANTY. ! * ! * Permission to use, copy, modify and distribute this software and its ! * documentation for any purpose is hereby granted without fee, ! * provided that the above copyright notice appear in all copies and ! * that both that copyright notice and this permission notice appear ! * in supporting documentation. It is provided "as is" without express ! * or implied warranty. ! * ! ! ! Author(s): Thomas Bretz 12/2000 (tbretz@uni-sw.gwdg.de) ! ! Copyright: MAGIC Software Development, 2000-2001 ! ! \* ======================================================================== */ void trigrate(int dim=0, char *filename = "data/camera.root" ) { // This macro has two input parameter: // dim : = 0 -> root file with 1 trigger condition. // > 0 -> number of trigger condition to be analised // in multi conditon file. // < 0 -> selects the -dim trigger condition. // // first we have to create our empty lists // MParList parlist; MTaskList tasklist; // // Setup the parameter list. // - we do not need to create any other container. All of them // are created automatically without loss - we don't have to // access them- // // - we need to create MHMcRate only. The other containers // are created automatically without loss - we don't have to // access them- // - MHMcRate must be created by us because we need the pointer // to it and if it would get created automatically it would also be // deleted automatically // - Actually, depending on using a single trigger option MonteCarlo // file or a multyple trigger option, a MHMcRate or an array of // MHMcRate are needed. // parlist.AddToList(&tasklist); // // You don't have to add the MHMcRate container here by hand. // But if you want to print or display these containers later on // it is necessary (Rem: No printing or displaying is done in this // macro yet) // UInt_t from = dim>0 ? 1 : -dim; UInt_t to = dim>0 ? dim : -dim; Int_t num = to-from+1; TObjArray hists(MParList::CreateObjList("MHMcRate", from, to)); hists.SetOwner(); // // Check if the list really contains the right number of histograms // if (hists.GetEntriesFast() != num) return; // // Add the histograms to the paramater list. // parlist.AddToList(&hists); // // Setup out tasks: // - First we have to read the events // - Then we can calculate rates, for what the number of // triggered showers from a empty reflector file for the // analised trigger conditions should be set (BgR[]) // MReadTree reader("Events", filename); tasklist.AddToList(&reader); Float_t BgR[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; cout << "Number of Trigger conditions: " << num << endl; MMcTriggerRateCalc rate(dim, 14, BgR, 100000); tasklist.AddToList(&rate); // // set up the loop for the processing // MEvtLoop magic; magic.SetParList(&parlist); // // Start to loop over all events // if (!magic.Eventloop()) return; hists.Print(); }