Changeset 5073


Ignore:
Timestamp:
09/16/04 16:17:29 (20 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mmontecarlo/MMcCollectionAreaCalc.cc

    r2252 r5073  
    7878    if (!fMcEvt)
    7979    {
    80         *fLog << err << dbginf << "MMcEvt not found... exit." << endl;
     80        *fLog << err << "MMcEvt not found... abort." << endl;
    8181        return kFALSE;
    8282    }
     
    8787Bool_t MMcCollectionAreaCalc::ReInit(MParList *plist)
    8888{
     89    fCollArea=0;
     90
    8991    MMcRunHeader *runheader = (MMcRunHeader*)plist->FindObject("MMcRunHeader");
    9092    if (!runheader)
    9193    {
    92         *fLog << err << dbginf << "Error - MMcRunHeader not found... exit." << endl;
    93         return kFALSE;
     94        *fLog << err << "Error - MMcRunHeader not found... abort." << endl;
     95        return kFALSE;
     96    }
     97
     98    fTotalNumSimulatedShowers += runheader->GetNumSimulatedShowers();
     99    *fLog << inf << "Total Number of Simulated showers: " << fTotalNumSimulatedShowers << endl;
     100
     101
     102    if (fTheta>=0 && fTheta!=runheader->GetTelesTheta())
     103    {
     104        *fLog << warn << "Warning - Read files have different TelesTheta (";
     105        *fLog << fTheta << ", " << runheader->GetTelesTheta() << ")..." << endl;
     106    }
     107    fTheta = runheader->GetTelesTheta();
     108
     109
     110    if (fCorsikaVersion!=0 && fCorsikaVersion!=runheader->GetCorsikaVersion())
     111        *fLog << warn << "Warning - Read files have different Corsika versions..." << endl;
     112    fCorsikaVersion = runheader->GetCorsikaVersion();
     113
     114
     115    fAllEvtsTriggered |= runheader->GetAllEvtsTriggered();
     116    *fLog << inf << "Only triggered events avail: " << (fAllEvtsTriggered?"yes":"no") << endl;
     117
     118
     119    fCollArea = (MHMcCollectionArea*)plist->FindCreateObj("MHMcCollectionArea");
     120    if (!fCollArea)
     121        return kFALSE;
     122
     123    if (!fAllEvtsTriggered)
     124    {
     125        fMcTrig = (MMcTrig*)plist->FindObject(fObjName);
     126        if (!fMcTrig)
     127        {
     128            *fLog << err << fObjName << " [MMcTrig] not found... anort." << endl;
     129            return kFALSE;
     130        }
     131        return kTRUE;
    94132    }
    95133
     
    97135    if (!corrunheader)
    98136    {
    99         *fLog << err << dbginf << "Error - MMcCorsikaRunHeader not found... exit." << endl;
    100         return kFALSE;
    101     }
    102 
    103     fTotalNumSimulatedShowers += runheader->GetNumSimulatedShowers();
    104     *fLog << inf << "Total Number of Simulated showers: " << fTotalNumSimulatedShowers << endl;
    105 
    106 
    107     if (fTheta>=0 && fTheta!=runheader->GetTelesTheta())
    108     {
    109         *fLog << warn << dbginf << "Warning - Read files have different TelesTheta (";
    110         *fLog << fTheta << ", " << runheader->GetTelesTheta() << ")..." << endl;
    111     }
    112     fTheta = runheader->GetTelesTheta();
    113 
    114 
    115     if (fCorsikaVersion!=0 && fCorsikaVersion!=runheader->GetCorsikaVersion())
    116         *fLog << warn << dbginf << "Warning - Read files have different Corsika versions..." << endl;
    117     fCorsikaVersion = runheader->GetCorsikaVersion();
    118 
    119 
    120     fAllEvtsTriggered |= runheader->GetAllEvtsTriggered();
    121     *fLog << inf << "Only triggered events avail: " << (fAllEvtsTriggered?"yes":"no") << endl;
    122 
    123 
    124     fCollArea = (MHMcCollectionArea*)plist->FindCreateObj("MHMcCollectionArea");
    125     if (!fCollArea)
    126         return kFALSE;
    127 
    128     if (fAllEvtsTriggered)
    129       {
    130         //
    131         // Calculate approximately the original number of events in each
    132         // energy bin:
    133         //
    134 
    135         const Float_t emin = corrunheader->GetELowLim();
    136         const Float_t emax = corrunheader->GetEUppLim();
    137         const Float_t expo = 1 + corrunheader->GetSlopeSpec();
    138         const Float_t k = runheader->GetNumSimulatedShowers() /
    139           (pow(emax,expo) - pow(emin,expo)) ;
    140 
    141         TH2 &hall = *fCollArea->GetHistAll();
    142 
    143         const Int_t nbinx = hall.GetNbinsX();
    144 
    145         TAxis &axe = *hall.GetXaxis();
    146         for (Int_t i = 1; i <= nbinx; i++)
    147           {
    148             const Float_t e1 = axe.GetBinLowEdge(i);
    149             const Float_t e2 = axe.GetBinLowEdge(i+1);
    150 
    151             if (e1 < emin || e2 > emax)
    152               continue;
    153 
    154             const Float_t events = k * (pow(e2, expo) - pow(e1, expo));
    155             //
    156             // We fill the i-th energy bin, with the total number of events
    157             // Second argument of Fill would be impact parameter of each
    158             // event, but we don't really need it for the collection area,
    159             // so we just put a dummy value (1.)
    160             //
    161 
    162             const Float_t energy = (e1+e2)/2.;
    163             hall.Fill(energy, 1., events);
    164           }
    165 
    166         return kTRUE;
    167       }
    168 
    169     fMcTrig = (MMcTrig*)plist->FindObject(fObjName);
    170     if (!fMcTrig)
    171     {
    172         *fLog << err << dbginf << fObjName << " [MMcTrig] not found... exit." << endl;
    173         return kFALSE;
     137        *fLog << err << "MMcCorsikaRunHeader not found... abort." << endl;
     138        return kFALSE;
     139    }
     140
     141    //
     142    // Calculate approximately the original number of events in each
     143    // energy bin:
     144    //
     145
     146    const Float_t emin = corrunheader->GetELowLim();
     147    const Float_t emax = corrunheader->GetEUppLim();
     148    const Float_t expo = 1 + corrunheader->GetSlopeSpec();
     149    const Float_t k = runheader->GetNumSimulatedShowers() /
     150        (pow(emax,expo) - pow(emin,expo)) ;
     151
     152    TH2 &hall = *fCollArea->GetHistAll();
     153
     154    const Int_t nbinx = hall.GetNbinsX();
     155
     156    TAxis &axe = *hall.GetXaxis();
     157    for (Int_t i = 1; i <= nbinx; i++)
     158    {
     159        const Float_t e1 = axe.GetBinLowEdge(i);
     160        const Float_t e2 = axe.GetBinLowEdge(i+1);
     161
     162        if (e1 < emin || e2 > emax)
     163            continue;
     164
     165        const Float_t events = k * (pow(e2, expo) - pow(e1, expo));
     166        //
     167        // We fill the i-th energy bin, with the total number of events
     168        // Second argument of Fill would be impact parameter of each
     169        // event, but we don't really need it for the collection area,
     170        // so we just put a dummy value (1.)
     171        //
     172
     173        const Float_t energy = (e1+e2)/2.;
     174        hall.Fill(energy, 1., events);
    174175    }
    175176
     
    205206
    206207Int_t MMcCollectionAreaCalc::PostProcess()
    207 {
     208{
     209    if (!fCollArea)
     210        return kTRUE;
     211
    208212    //
    209213    //   do the calculation of the effectiv area
Note: See TracChangeset for help on using the changeset viewer.