Changeset 8602 for trunk


Ignore:
Timestamp:
06/25/07 14:06:05 (17 years ago)
Author:
hoehne
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r8601 r8602  
    1818
    1919                                                 -*-*- END OF LINE -*-*-
     20
     21
     22 2007/06/25 Daniel Hoehne
     23
     24   * datacenter/scripts/linkmc:
     25     - implemented execution of fillcamera.C, now first a mc camera file
     26       is linked and then fillcamera.C runs for this file
     27
     28   * datacenter/macros/fillcamera.C:
     29     - bugfix: the macro doesn't giva a seg-fault anymore (thanks to Thomas)
     30     - arranged the structure more clearly
     31
    2032
    2133
  • trunk/MagicSoft/Mars/datacenter/macros/fillcamera.C

    r8538 r8602  
    1616!
    1717!
    18 !   Author(s): Thomas Bretz, 11/2005 <mailto:tbretz@astro.uni-wuerzburg.de>
     18!   Author(s): Thomas Bretz, 06/2007 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!   Author(s): Daniela Dorner, 11/2005 <mailto:dorner@astro.uni-wuerzburg.de>
    20 !   Author(s): Daniel Hoehne, 05/2007 <mailto:hoehne@astro.uni-wuerzburg.de>
     20!   Author(s): Daniel Hoehne, 06/2007 <mailto:hoehne@astro.uni-wuerzburg.de>
    2121!
    2222!   Copyright: MAGIC Software Development, 2000-2007
     
    3636//
    3737// Returns 0 in case of failure and 1 in case of success.
    38 //
    39 //
    40 // At the moment the macro works but produces a segmentation violation.
    4138//
    4239//
     
    5956#include "MSQLServer.h"
    6057#include "MSQLMagic.h"
    61 #include "MGeomCamMagic.h"
    6258
    6359#include "MMcRunHeader.hxx"
     
    7369
    7470using namespace std;
    75 // --------------------------------------------------------------------------
    76 //
    77 // Checks whether an entry is already existing
    78 //
    79 Bool_t ExistStr(MSQLServer &serv, const char *column, const char *table, Int_t test)
    80 {
    81     TString query(Form("SELECT %s FROM %s WHERE %s='%d'", column, table, column, test));
    82     TSQLResult *res = serv.Query(query);
    83     if (!res)
    84         return kFALSE;
    85 
    86     TSQLRow *row;
    87 
    88     Bool_t rc = kFALSE;
    89     while ((row=res->Next()))
    90     {
    91         if ((*row)[0])
    92         {
    93             rc = kTRUE;
    94             break;
    95         }
    96     }
    97 
    98     delete res;
    99 
    100     return rc;
    101 }
    102 /*
    103 //
    104 // Function to transform zenithangle range to zbin (not needed any more)
    105 //
    106 Double_t ThetaToZBin(Double_t tmin, Double_t tmax)
    107 {
    108     double result=TMath::Nint(100*(1-TMath::Cos(((tmin+tmax)/2)*TMath::DegToRad())));
    109     return result;
    110 }
    111 */
    112 
    113 //int Process(MSQLServer &serv, TString fname, Bool_t dummy)
     71
    11472int Process(MSQLMagic &serv, TString fname, Bool_t dummy)
    11573{
     
    11876    {
    11977        cout << "ERROR - Could not find file " << fname << endl;
    120         return 0;
    121     }
    122 
    123 //
    124 // Get tree RunHeaders from file
    125 //
     78        return 2;
     79    }
     80
     81    //
     82    // Get tree RunHeaders from file
     83    //
    12684    TTree *tree = dynamic_cast<TTree*>(file.Get("RunHeaders"));
    12785    if (!tree)
    12886    {
    12987        cout << "ERROR - Tree RunHeaders not found in file " << fname << endl;
    130         return 0;
    131     }
    132 //
    133 // Get branch MMcCorsikaRunHeader from tree RunHeaders
    134 //
     88        return 2;
     89    }
     90
     91    //
     92    // Get branch MMcCorsikaRunHeader from tree RunHeaders
     93    //
    13594    TBranch *b1 = tree->GetBranch("MMcCorsikaRunHeader.");
    13695    if (!b1)
    13796    {
    13897        cout << "ERROR - Branch MMcCorsikaRunHeader. not found in file " << fname << endl;
    139         return 0;
    140     }
    141 
    142     MMcCorsikaRunHeader *runheader1 = new MMcCorsikaRunHeader();
     98        return 2;
     99    }
     100
     101    MMcCorsikaRunHeader *runheader1 = 0;
    143102    b1->SetAddress(&runheader1);
    144 //
    145 // Get branch MMcConfigRunHeader from tree RunHeaders
    146 //
     103
     104    //
     105    // Get branch MMcConfigRunHeader from tree RunHeaders
     106    //
    147107    TBranch *b2 = tree->GetBranch("MMcConfigRunHeader.");
    148108    if (!b2)
    149109    {
    150110        cout << "ERROR - Branch MMcConfigRunHeader. not found in file " << fname << endl;
    151         return 0;
    152     }
    153 
    154     MMcConfigRunHeader *runheader2 = new MMcConfigRunHeader();
     111        return 2;
     112    }
     113
     114    MMcConfigRunHeader *runheader2 = 0;
    155115    b2->SetAddress(&runheader2);
    156 //
    157 // Get branch MMcRunHeader from tree RunHeaders
    158 //
     116
     117    //
     118    // Get branch MMcRunHeader from tree RunHeaders
     119    //
    159120    TBranch *b3 = tree->GetBranch("MMcRunHeader.");
    160121    if (!b3)
    161122    {
    162123        cout << "ERROR - Branch MMcRunHeader. not found in file " << fname << endl;
    163         return 0;
    164     }
    165 
    166     MMcRunHeader *runheader3 = new MMcRunHeader();
     124        return 2;
     125    }
     126
     127    MMcRunHeader *runheader3 = 0;
    167128    b3->SetAddress(&runheader3);
    168 //
    169 // Get branch MMcFadcRunHeader from tree RunHeaders
    170 //
     129
     130    //
     131    // Get branch MMcFadcRunHeader from tree RunHeaders
     132    //
    171133    TBranch *b4 = tree->GetBranch("MMcFadcHeader.");
    172134    if (!b4)
    173135    {
    174136        cout << "ERROR - Branch MMcFadcHeader. not found in file " << fname << endl;
    175         return 0;
    176     }
    177 
    178     MMcFadcHeader *fadcheader = new MMcFadcHeader();
     137        return 2;
     138    }
     139
     140    MMcFadcHeader *fadcheader = 0;
    179141    b4->SetAddress(&fadcheader);
    180 //
    181 // Get branch MRawRunHearder from tree RunHeaders
    182 //
     142
     143    //
     144    // Get branch MRawRunHearder from tree RunHeaders
     145    //
    183146    TBranch *b5 = tree->GetBranch("MRawRunHeader.");
    184147    if (!b5)
    185148    {
    186149        cout << "ERROR - Branch MRawRunHeader. not found in file " << fname << endl;
    187         return 0;
    188     }
    189 
    190     MRawRunHeader *rawheader = new MRawRunHeader();
     150        return 2;
     151    }
     152
     153    MRawRunHeader *rawheader = 0;
    191154    b5->SetAddress(&rawheader);
    192155
    193156    tree->GetEvent(0);
    194 //
    195 // Get tree Events from file
    196 //
     157
     158    //
     159    // Get tree Events from file
     160    //
    197161    TTree *tree2 = dynamic_cast<TTree*>(file.Get("Events"));
    198162    if (!tree2)
    199163    {
    200164        cout << "ERROR - Tree Events not found in file " << fname << endl;
    201         return 0;
    202     }
    203 //
    204 // Get branch MMcEvtBasic from tree Events
    205 //
     165        return 2;
     166    }
     167
     168    //
     169    // Get branch MMcEvtBasic from tree Events
     170    //
    206171    TBranch *b6 = tree2->GetBranch("MMcEvtBasic.");
    207172    if (!b6)
    208173    {
    209174        cout << "ERROR - Branch MMcEvtBasic. not found in file " << fname << endl;
    210         return 0;
    211     }
    212 
    213     MMcEvtBasic *evtbasic = new MMcEvtBasic();
     175        return 2;
     176    }
     177
     178    MMcEvtBasic *evtbasic = 0;
    214179    b6->SetAddress(&evtbasic);
    215180
    216181    tree2->GetEvent(0);
    217182
    218 
    219 
    220     Float_t emin = runheader1->GetELowLim();
    221     TString elow = Form("%5.1f",emin);
    222     Float_t emax = runheader1->GetEUppLim();
    223     TString eupp = Form("%5.1f",emax);
    224 
    225     Float_t slopespec  = runheader1->GetSlopeSpec();
    226     TString slope      = Form("%5.1f",slopespec);
    227 
    228     Float_t wobblemode = runheader1->GetWobbleMode();
    229     TString wobble     = Form("%5.0f",wobblemode);
    230 
    231     Float_t corsvers1  = runheader1->GetCorsikaVersion();
    232     TString corsika1   = Form("%5.0f",corsvers1);
    233 
    234     Float_t pointspread    = runheader2->GetPointSpread();
    235     TString psf            = Form("%5.1f",pointspread);
    236     Float_t pointspreadx   = runheader2->GetPointSpreadX();
    237     TString psfx           = Form("%5.2f",pointspreadx);
    238     Float_t pointspready   = runheader2->GetPointSpreadY();
    239     TString psfy           = Form("%5.2f",pointspready);
    240     Float_t pointspreadadd = TMath::Hypot(runheader2->GetPointSpreadX(), runheader2->GetPointSpread());
    241     TString psfadd         = Form("%5.2f",pointspreadadd);
    242 
    243     Float_t mispointingx = runheader2->GetMissPointingX();
    244     TString misx         = Form("%5.2f",mispointingx);
    245     Float_t mispointingy = runheader2->GetMissPointingY();
    246     TString misy         = Form("%5.2f",mispointingy);
    247 
    248     Float_t reflvers  = runheader3->GetReflVersion();
    249     TString reflector = Form("%5.0f",reflvers);
    250     Float_t camvers   = runheader3->GetCamVersion();
    251     TString camera    = Form("%5.0f",camvers);
    252 
    253     Float_t impactmax = runheader3->GetImpactMax();
    254     TString imax      = Form("%5.1f",impactmax);
     183    Double_t misptx       = runheader2->GetMissPointingX();
     184    Double_t mispty       = runheader2->GetMissPointingY();
     185    Double_t pointspreadx = runheader2->GetPointSpreadX();
     186    Double_t tmin         = runheader3->GetShowerThetaMin();
     187    Double_t tmax         = runheader3->GetShowerThetaMax();
     188    UInt_t   numsimshow   = runheader3->GetNumSimulatedShowers();
     189    UInt_t   numevents    = tree2->GetEntries();
     190
     191    TString elow      = Form("%5.1f", runheader1->GetELowLim());
     192    TString eupp      = Form("%5.1f", runheader1->GetEUppLim());
     193    TString slope     = Form("%5.1f", runheader1->GetSlopeSpec());
     194    TString wobble    = Form("%5.0f", runheader1->GetWobbleMode());
     195    TString corsika1  = Form("%5.0f", runheader1->GetCorsikaVersion());
     196    TString psf       = Form("%5.1f", runheader2->GetPointSpread());
     197    TString psfx      = Form("%5.2f", pointspreadx);
     198    TString psfy      = Form("%5.2f", runheader2->GetPointSpreadY());
     199    TString psfadd    = Form("%5.2f", TMath::Hypot(runheader2->GetPointSpreadX(), runheader2->GetPointSpread()));
     200    TString mirrfrac  = Form("%5.2f", runheader2->GetMirrorFraction());
     201    TString misx      = Form("%5.2f", misptx);
     202    TString misy      = Form("%5.2f", mispty);
     203    TString reflector = Form("%5.0f", runheader3->GetReflVersion());
     204    TString camera    = Form("%5.0f", runheader3->GetCamVersion());
     205    TString imax      = Form("%5.1f", runheader3->GetImpactMax());
     206    TString numphe    = Form("%5.1f", runheader3->GetNumPheFromDNSB());
     207    TString pmin      = Form("%5.1f", runheader3->GetShowerPhiMin());
     208    TString pmax      = Form("%5.1f", runheader3->GetShowerPhiMax());
     209    TString numss     = Form("%7.0i", numsimshow);
     210    TString thetamin  = Form("%5.1f", tmin);
     211    TString thetamax  = Form("%5.1f", tmax);
     212    TString ped       = Form("%5.1f", fadcheader->GetPedestal(1));
     213    TString low2high  = Form("%5.1f", fadcheader->GetLow2HighGain());
     214    TString amplfadc  = Form("%5.1f", fadcheader->GetAmplitud());
     215    TString amplfadco = Form("%5.1f", fadcheader->GetAmplitudOuter());
     216    TString enoise    = Form("%5.1f", fadcheader->GetElecNoise(1));
     217    TString dnoise    = Form("%5.1f", fadcheader->GetDigitalNoise(1));
    255218
    256219    TH1I h("myhist", "", 1, -0.5, 0.5);
    257220    tree2->Draw("MRawEvtData.GetNumPixels()>>myhist", "", "goff");
    258221    h.SetDirectory(0);
    259     UInt_t numtriggers = TMath::Nint(h.GetBinContent(2));
    260     TString numtrig = Form("%7.0i",numtriggers);
    261 
    262     UInt_t numsimshow = runheader3->GetNumSimulatedShowers();
    263     TString numss     = Form("%7.0i",numsimshow);
    264     UInt_t numevents  = tree2->GetEntries();
    265     TString numevt    = Form("%7.0i",numevents);
    266 
    267     Float_t numphednsb = runheader3->GetNumPheFromDNSB();
    268     TString numphe    = Form("%5.1f",numphednsb);
    269 
    270     Float_t pedestal     = fadcheader->GetPedestal(1);
    271     TString ped          = Form("%5.1f",pedestal);
    272     Float_t low2highgain = fadcheader->GetLow2HighGain();
    273     TString low2high     = Form("%5.1f",low2highgain);
    274 
    275     Float_t amplitude = fadcheader->GetAmplitud();
    276     TString amplfadc  = Form("%5.1f",amplitude);
    277     Float_t amplitudo = fadcheader->GetAmplitudOuter();
    278     TString amplfadco = Form("%5.1f",amplitudo);
    279 
    280     Float_t elecnoise = fadcheader->GetElecNoise(1);
    281     TString enoise    = Form("%5.1f",elecnoise);
    282     Float_t diginoise = fadcheader->GetDigitalNoise(1);
    283     TString dnoise    = Form("%5.1f",diginoise);
    284 
    285     Float_t phimin = runheader3->GetShowerPhiMin();
    286     TString pmin   = Form("%5.1f",phimin);
    287     Float_t phimax = runheader3->GetShowerPhiMax();
    288     TString pmax   = Form("%5.1f",phimax);
    289 
    290     Float_t particleid   = evtbasic->GetPartId();
    291     TString partid       = Form("%5.0f",particleid);
    292     TString partname     = evtbasic->GetParticleName();
    293 //    TString partname = Form("%5.1f",particlename);
    294 
    295     Double_t tmin    = runheader3->GetShowerThetaMin();
    296     TString thetamin = Form("%5.1f",tmin);
    297     Double_t tmax    = runheader3->GetShowerThetaMax();
    298     TString thetamax = Form("%5.1f",tmax);
    299 
    300     Float_t mirrorfraction = runheader2->GetMirrorFraction();
    301     TString mirrfrac       = Form("%5.2f",mirrorfraction);
    302 //    Float_t reflectivity   = runheader2->GetMirrors()->GetReflectivity()->GetArray();
    303 //    TString refl           = Form("%5.2f",reflectivity);
    304 
    305 
    306 //workaround for getting the spotsize in cm from PointSpreadX (for path)
    307 /*
    308     Double_t psfx=runheader2->GetPointSpreadX();
    309     cout << "psfx=" << psfx << endl;
    310     psfx=psfx*10;
    311     Int_t psfxint= (int) psfx;
    312     psfx=psfxint;
    313     psfx=psfx/10;
    314     cout << "PSF for path=" << psfx << endl;
    315 */
    316 
    317 
    318 
    319 
    320 /*
    321 //     Bestimmung von fakewobble aus file
    322 //     Kombination aus Wobble(0,1) und MissPoint
    323     TString WobbleMod;
    324 
    325     if (wobblemode != 0){
    326         WobbleMod = "wobble";
    327     }
    328     else
    329     {
    330         if (mispointingx == 0 && mispointingy == 0){
    331             WobbleMod = "nowobble";
    332         }
    333         else{
    334             WobbleMod = "fakewobble";
    335         }
    336      }
    337 */
    338     /* Bestimmung von fakewobble aus file */
    339     /* Kombination aus Wobble(0,1) und MissPoint */
    340     TString WobbleMod;
    341 
    342     if (wobblemode == 1){
    343         WobbleMod = "Wobble";
    344     }
    345     else
    346     {
    347         if (mispointingx == 0 && mispointingy == 0){
    348             WobbleMod = "On";
    349         }
    350         else{
    351             WobbleMod = "Fake Wobble";            // als ObservationModeKEY 4 einfügen?
    352         }
    353      }
     222
     223    TString numtrig   = Form("%7.0i", TMath::Nint(h.GetBinContent(2)));
     224    TString numevt    = Form("%7.0i", numevents);
     225    TString partid    = Form("%5.0f", evtbasic->GetPartId());
     226    TString partname  = evtbasic->GetParticleName();
     227
     228    // Bestimmung von fakewobble aus file
     229    // Kombination aus Wobble(0,1) und MissPoint
     230    TString wobblemod="Wobble";
     231
     232    // Fake Wobble: als ObservationModeKEY 4 einfügen?
     233    if (wobblemod != 1)
     234        wobblemod = misptx == 0 && mispty == 0 ? "On" : "Fake Wobble";
    354235
    355236    Float_t pointsfx=TMath::Floor(pointspreadx*10);
     
    357238    TString pointsfuncx=Form("%5.1f",pointsfx);
    358239
    359 //    Float_t cos1=TMath::DegToRad(tmin);
    360 //    Float_t cos2=TMath::DegToRad(tmax);
    361240    Float_t zBin=TMath::Nint((1-((TMath::Cos(tmin*TMath::Pi()/180)+TMath::Cos(tmax*TMath::Pi()/180))/2))*100);
    362241    zBin=TMath::Nint(zBin);
    363242
    364 // folgende Werte werden aus dem Pfadnamen gewonnen   !!!neue Pfadstuktur!!!
    365 //    RunNumber
     243    // folgende Werte werden aus dem Pfadnamen gewonnen
     244    // RunNumber
    366245    TRegexp reg2("_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_");
    367246    TString Run = fname(reg2);
    368247    Int_t RunNum = atoi(Run.Data()+1);
    369 
    370      if (RunNum < 1 || RunNum > 99999)
    371      {
    372          cout << "ERROR - RunNumber wrong value" << endl;
    373          return 0;
    374      }
    375 
    376 //     PointSpreadFunction
     248    if (RunNum < 1 || RunNum > 99999)
     249    {
     250        cout << "ERROR - RunNumber wrong value" << endl;
     251        return 2;
     252    }
     253
     254    // PointSpreadFunction
    377255    TRegexp reg4("/[12][0-9]/");
    378256    TString pointsf = fname(reg4);
    379257    Int_t Point = atoi(pointsf.Data()+1);
    380 
    381258    if (Point < 0 || Point > 99)
    382259    {
    383260        cout << "ERROR - PointSpreadFunction wrong value" << endl;
    384 
    385         return 0;
    386     }
    387 
    388 //     zbin
     261        return 2;
     262    }
     263
     264    // zbin
    389265    TRegexp reg1("/19[0-9][0-9]/");
    390266    TString zbin = fname(reg1);
    391267    Int_t ZBin  = atoi(zbin.Data()+3);
    392 
    393268    if (ZBin < 0 || ZBin > 99)
    394269    {
    395270        cout << "ERROR - zbin wrong value" << endl;
    396         return 0;
    397     }
    398 
    399 // WobbleMode
     271        return 2;
     272    }
     273
     274    // WobbleMode
    400275    TRegexp reg3("/0[0-9]/");   /*extrahiert '/0X'   mit X= 1-8 */
    401     TString WM = fname(reg3);   /* weist WM den extrahierten Wert zu */
    402     Int_t Wob = atoi(WM.Data()+1); /* schneidet fuehrenden '/' ab */
    403 
    404      if (Wob < 1 || Wob > 8)
    405      {
    406          cout << "ERROR - ObservationMode wrong value" << endl;
    407          return 0;
    408      }
    409 
    410 
    411     /* wandelt numerischen Wert in WobbleModus Bezeichnung um */
    412 
    413      const TString wobbleModes[] = {
    414         "",             // 0 wird nicht verwendet, daher ein leeres Feld
    415         "Gammawobble+",
    416         "Gammanowobble0",
    417         "GammawobbleHE+",
    418         "GammanowobbleHE0",
    419         "Gammawobble0",
    420         "GammawobbleHE0",
    421         "Gammadiffuse0"
    422         "Protonnowobble0",
    423     };
    424 
    425     /* Umrechnung von WobbleModus Bezeichnung in 'wobble', 'nowobble', 'fakewobble' */
    426     TString WobMode;    /* dieser Wert wird in 'MCDB' Tabelle 'WobbleMode' eingetragen */
    427 
    428     if (Wob == 1 || Wob == 3){
    429         WobMode = "Wobble";
    430     }
    431     if (Wob == 2 || Wob == 4 || Wob == 7 || Wob == 8){
    432         WobMode = "On";
    433     }
    434     if (Wob == 5 || Wob == 6){
    435         WobMode = "Fake Wobble";
    436      }
    437 
    438 
    439     /*    MGeomCamMagic m;
    440     cout << fadcheader->GetAmplitud() << endl;
    441     cout << fadcheader->GetCameraMean(m, 0)<<  endl;
    442     cout << fadcheader->GetCameraMean(m, 1)<<  endl;
    443 */
    444 
    445     cout << "File " << fname << endl;
     276    TString wm = fname(reg3);   /* weist WM den extrahierten Wert zu */
     277    Int_t wob = atoi(wm.Data()+1); /* schneidet fuehrenden '/' ab */
     278
     279
     280    // Umrechnung von WobbleModus Bezeichnung in 'wobble', 'nowobble', 'fakewobble'
     281    TString wobmode;    // dieser Wert wird in 'MCDB' Tabelle 'WobbleMode' eingetragen
     282    switch (wob)
     283    {
     284    case 1:
     285    case 3:
     286        wobmode = "Wobble";
     287        break;
     288
     289    case 2:
     290    case 4:
     291    case 7:
     292    case 8:
     293        wobmode = "On";
     294        break;
     295
     296    case 5:
     297    case 6:
     298        wobmode = "Fake Wobble";
     299        break;
     300
     301    default:
     302        cout << "ERROR - ObservationMode wrong value" << endl;
     303        return 2;
     304    }
    446305
    447306
     
    451310    cout << "--- From File ---" << endl;
    452311
    453 //    cout << wobblemode << endl;
    454 //    cout << wobble << endl;
    455     cout << endl;
    456     cout << elow << " < E < " << eupp      << endl;
    457     cout << "SpectralIndex  " << slope     << endl;
    458     cout << "WobbleMode     " << WobbleMod << endl;
    459     cout << "ObservationMode " << WobbleMod << endl;
    460     cout << "CorsikaVer     " << corsika1  << endl;
    461     cout << "ReflVer        " << reflector << endl;
    462     cout << "CamVer         " << camera    << endl;
    463     cout << "ParticleId     " << partid    << endl;
    464     cout << "ParticleName  "  << partname  << endl;
    465     cout << "PointSpread    " << psf       << endl;
    466     cout << "PointSpreadXY  " << psfx      << " /" << psfy << endl;
    467     cout << "AdditionPSF    " << psfadd << endl;
    468     cout << "MispointingXY  " << misx << " /" << misy <<endl;
    469     cout << "NumSimShowers  " << numss     << endl;
    470     cout << "ImpactMax      " << imax      << endl;
    471     cout << "NumEvents      " << numevt    << endl;
    472     cout << "NumTriggers    " << numtrig   << endl;
    473     cout << "NumPheFromDNSB " << numphe    << endl;
    474     cout << "Pedestal       " << ped       << endl;
    475     cout << "Low2HighGain   " << low2high  << endl;
    476     cout << "AmplitudeFADC  " << amplfadc  << endl;
    477     cout << "AmplFADCOuter  " << amplfadco << endl;
    478     cout << "ElecNoise      " << enoise    << endl;
    479     cout << "DigiNoise      " << dnoise    << endl;
    480     cout << "PhiMin         " << pmin      << endl;
    481     cout << "PhiMax         " << pmax      << endl;
    482     cout << "ThetaMin       " << thetamin  << endl;
    483     cout << "ThetaMax       " << thetamax  << endl;
    484 
    485 //    cout << "Zenith range=" << runheader3->GetShowerThetaMin() << "to" << runheader3->GetShowerThetaMax() << endl;
    486     cout << "Zenith range      " << tmin << " to " << tmax << endl;
    487 
    488 //    cout << "zbin              " << ThetaToZBin(tmin,tmax) << endl;
    489 
    490     cout << "MirrorFraction " << mirrfrac << endl;
    491 //    cout << "Reflectivity   " << refl     << endl;
    492 
    493     cout << endl;
     312    cout << endl;
     313    cout << "Energy Range    " << elow << " < E < " << eupp      << endl;
     314    cout << "SpectralIndex   " << slope     << endl;
     315    cout << "ObservationMode " << wobblemod << endl;
     316    cout << "CorsikaVer      " << corsika1  << endl;
     317    cout << "ReflVer         " << reflector << endl;
     318    cout << "CamVer          " << camera    << endl;
     319    cout << "ParticleId      " << partid    << endl;
     320    cout << "ParticleName    "  << partname  << endl;
     321    cout << "PointSpread     " << psf       << endl;
     322    cout << "PointSpreadXY   " << psfx      << " /" << psfy << endl;
     323    cout << "AdditionPSF     " << psfadd << endl;
     324    cout << "MispointingXY   " << misx << " /" << misy <<endl;
     325    cout << "NumSimShowers   " << numss     << endl;
     326    cout << "ImpactMax       " << imax      << endl;
     327    cout << "NumEvents       " << numevt    << endl;
     328    cout << "NumTriggers     " << numtrig   << endl;
     329    cout << "NumPheFromDNSB  " << numphe    << endl;
     330    cout << "Pedestal        " << ped       << endl;
     331    cout << "Low2HighGain    " << low2high  << endl;
     332    cout << "AmplitudeFADC   " << amplfadc  << endl;
     333    cout << "AmplFADCOuter   " << amplfadco << endl;
     334    cout << "ElecNoise       " << enoise    << endl;
     335    cout << "DigiNoise       " << dnoise    << endl;
     336    cout << "PhiMin          " << pmin      << endl;
     337    cout << "PhiMax          " << pmax      << endl;
     338    cout << "ThetaMin        " << thetamin  << endl;
     339    cout << "ThetaMax        " << thetamax  << endl;
     340    cout << "Zenith range    " << tmin << " to " << tmax << endl;
     341    cout << "MirrorFraction  " << mirrfrac << endl;
     342    cout << endl;
     343
    494344    cout << endl;
    495345    cout << "--- key's from mcdb tables ---" << endl;
    496346    cout << endl;
    497347
    498 
    499 //    Int_t corsikakey = QueryNameKEY(serv, dummy, "CorsikaVersion", Form("%d",CorVer));
    500 
    501 //    Int_t corsikakey = QueryNameKEY(serv, dummy, "CorsikaVersion", corsika1.Data());
    502348    Int_t corsikakey = serv.QueryKeyOfName("CorsikaVersion", corsika1.Data());
     349    Int_t reflectorkey = serv.QueryKeyOfName("ReflectorVersion", reflector.Data());
     350    Int_t camerakey = serv.QueryKeyOfName("CameraVersion", camera.Data());
     351    Int_t observationkey = serv.QueryKeyOfName("ObservationMode", wobblemod.Data());
     352    Int_t particlekey = serv.QueryKeyOfName("MCParticle", partname.Data());
     353
    503354    cout << "corsikakey: " << corsikakey << endl;
    504 
    505 //    Int_t reflectorkey = QueryNameKEY(serv, dummy, "ReflectorVersion", reflector.Data());
    506     Int_t reflectorkey = serv.QueryKeyOfName("ReflectorVersion", reflector.Data());
    507355    cout << "reflectorkey: " << reflectorkey << endl;
    508 
    509 //    Int_t camerakey = QueryNameKEY(serv, dummy, "CameraVersion", camera.Data());
    510     Int_t camerakey = serv.QueryKeyOfName("CameraVersion", camera.Data());
    511356    cout << "camerakey: " << camerakey << endl;
    512 
    513 //    Int_t wobblekey = QueryNameKEY(serv, dummy, "WobbleMode",Form("%s",WobbleMod.Data()));
    514     Int_t wobblekey = serv.QueryKeyOfName("WobbleMode", WobbleMod.Data());
    515     cout << "wobblekey: " << wobblekey << endl;
    516 
    517 //    Int_t observationkey = QueryNameKEY(serv, dummy, "ObservationMode",Form("%s",WobbleMod.Data()));
    518     Int_t observationkey = serv.QueryKeyOfName("ObservationMode", WobbleMod.Data());
    519357    cout << "observationkey: " << observationkey << endl;
    520 
    521 //     Int_t particlekey = QueryNameKEY(serv, dummy, "MCParticle", Form("%s",partname.Data()));
    522     Int_t particlekey = serv.QueryKeyOfName("MCParticle", partname.Data());
    523      cout << "particlekey: " << particlekey << endl;
    524     cout << endl;
    525     cout << endl;
    526 
    527 //    TRegexp reg1("/Spot_[0123456789.]*/");
    528 //    TRegexp reg2("/[a-zA-Z]*wobble[a-zA-Z]*/");
    529 //    TRegexp reg3("_zbin[0-9]+_");
    530 
     358    cout << "particlekey: " << particlekey << endl;
     359
     360    cout << endl;
     361    cout << endl;
    531362    cout << "--- From File ---" << endl;
    532363    cout << endl;
    533     cout << "WobbleMode     " << WobbleMod << endl;
    534     cout << "PSF            " << pointsfuncx << endl;
    535     cout << "zBin           " << zBin << endl;
     364    cout << "WobbleMode      " << wobblemod << endl;
     365    cout << "PSF             " << pointsfuncx << endl;
     366    cout << "zBin            " << zBin << endl;
    536367    cout << endl;
    537368    cout << "--- From FileName ---" << endl;
    538369    cout << endl;
    539     cout << "WobbleMode       " << WobMode   << endl;
    540     cout << "RunNum           " << RunNum    << endl;
    541     cout << "PSF              " << Point     << endl;
    542     cout << "ZBin             " << ZBin      << endl;
    543     cout << "WobbleMode(Pfad) " << Wob       << endl;
    544     cout << endl;
    545     cout << "--- Check ---" << endl;
    546     cout << endl;
    547 
    548     if (WobbleMod!=WobMode){
     370    cout << "WobbleMode      " << wobmode   << endl;
     371    cout << "RunNum          " << RunNum    << endl;
     372    cout << "PSF             " << Point     << endl;
     373    cout << "ZBin            " << ZBin      << endl;
     374    cout << "WobbleMode(dir) " << wob       << endl;
     375    cout << endl;
     376
     377
     378    if (wobblemod!=wobmode)
     379    {
    549380        cout << "Error, WobbleMode in file and filename are not the same" << endl;
    550         return 0;
    551     }
    552     else{
    553         cout << "WobbleMode correct" << endl;
    554     }
    555     if (pointsfx!=Point){
     381        return 2;
     382    }
     383    if (pointsfx!=Point)
     384    {
    556385        cout << "Error, PSF in file and filename are not the same" << endl;
    557         return 0;
    558     }
    559     else{
    560         cout << "PSF correct" << endl;
    561     }
    562     if (zBin!=ZBin){
     386        return 2;
     387    }
     388    if (zBin!=ZBin)
     389    {
    563390        cout << "Error, ZBin in file and filename are not the same" << endl;
    564         return 0;
    565     }
    566     else{
    567         cout << "ZBin correct" << endl;
    568     }
    569 
    570     delete runheader1;
    571     delete runheader2;
    572     delete runheader3;
    573     delete fadcheader;
    574     delete rawheader;
    575     delete evtbasic;
    576 
    577 
    578     TString query;
    579 
    580     if (!ExistStr(serv, "fRunNumber", "MCRunData", RunNum ))
    581     {
    582         query = Form(" INSERT INTO MCRunData SET"
    583                      " fELowLim=%s,"
    584                      " fEUppLim=%s, "
    585                      " fSlopeSpec=%s, "
    586                      " fImpactMax=%s, "
    587                      " fNumSimulatedShowers=%d, "
    588                      " fNumEvents=%d, "
    589                      " fNumPheFromDNSB=%s, "
    590                      " fzbin=%d, "
    591                      " fThetaMin=%s, "
    592                      " fThetaMax=%s, "
    593                      " fPointSpread=%s, "
    594                      " fPointSpreadX=%s, "
    595                      " fPointSpreadY=%s, "
    596                      " fPedesMean=%s, "
    597                      " fLow2HighGain=%s, "
    598                      " fAmplFadc=%s, "
    599                      " fAmplFadcOuter=%s, "
    600                      " fElectricNoise=%s, "
    601                      " fDigitalNoise=%s, "
    602                      " fRunNumber=%d, "
    603                      " fMisspointingX=%s, "
    604                      " fMissPointingY=%s, "
    605                      " fCorsikaVersionKEY =%d, "
    606                      " fReflectorVersionKEY=%d, "
    607                      " fCameraVersionKEY=%d, "
    608                      " fWobbleModeKEY=%d, "
    609                      " fObservationModeKEY=%d, "
    610                      " fMCParticleKEY=%d, "
    611                      " fSequenceFirst=0 ",
    612                      elow.Data(), eupp.Data(), slope.Data(), imax.Data(), numsimshow, numevents, numphe.Data(),
    613                      zBin, thetamin.Data(), thetamax.Data(), psf.Data(), psfx.Data(), psfy.Data(), ped.Data(), low2high.Data(),
    614                      amplfadc.Data(), amplfadco.Data(), enoise.Data(), dnoise.Data(), RunNum,
    615                      misx.Data(), misy.Data(), corsikakey, reflectorkey, camerakey, wobblekey, observationkey, particlekey  );
    616 
    617     }
    618 
    619 //
    620 //  not yet implemented
    621 //
    622 
    623 /*
    624     if (!ExistStr(serv, "fRunNumber", "MCRunData", RunNum ))
    625     {
    626     query = Form(" fELowLim=%s,"
    627                  " fEUppLim=%s, "
    628                  " fSlopeSpec=%s, "
    629                  " fImpactMax=%s, "
    630                  " fNumSimulatedShowers=%d, "
    631                  " fNumEvents=%d, "
    632                  " fNumPheFromDNSB=%s, "
    633                  " fzbin=%d, "
    634                  " fThetaMin=%s, "
    635                  " fThetaMax=%s, "
    636                  " fPointSpread=%s, "
    637                  " fPointSpreadX=%s, "
    638                  " fPointSpreadY=%s, "
    639                  " fPedesMean=%s, "
    640                  " fLow2HighGain=%s, "
    641                  " fAmplFadc=%s, "
    642                  " fAmplFadcOuter=%s, "
    643                  " fElectricNoise=%s, "
    644                  " fDigitalNoise=%s, "
    645                  " fRunNumber=%d, "
    646                  " fMisspointingX=%s, "
    647                  " fMissPointingY=%s, "
    648                  " fCorsikaVersionKEY =%d, "
    649                  " fReflectorVersionKEY=%d, "
    650                  " fCameraVersionKEY=%d, "
    651                  " fWobbleModeKEY=%d, "
    652                  " fObservationModeKEY=%d, "
    653                  " fMCParticleKEY=%d, "
    654                  " fSequenceFirst=0 ",
    655                  elow.Data(), eupp.Data(), slope.Data(), imax.Data(), numsimshow, numevents, numphe.Data(),
    656                  zBin, thetamin.Data(), thetamax.Data(), psf.Data(), psfx.Data(), psfy.Data(), ped.Data(), low2high.Data(),
    657                  amplfadc.Data(), amplfadco.Data(), enoise.Data(), dnoise.Data(), RunNum,
    658                  misx.Data(), misy.Data(), corsikakey, reflectorkey, camerakey, wobblekey, observationkey, particlekey  );
    659     }
    660 
    661     if (serv.Insert("MCRunData", query)==kFALSE)
    662         return 2;
    663 */
    664 
    665 
     391        return 2;
     392    }
     393
     394    TString vars =
     395        Form("fELowLim=%s, fEUppLim=%s, fSlopeSpec=%s, "
     396             "fImpactMax=%s, fNumSimulatedShowers=%d, fNumEvents=%d, "
     397             "fNumPheFromDNSB=%s, fZBin=%d, fThetaMin=%s, "
     398             "fThetaMax=%s, fPointSpread=%s, fPointSpreadX=%s, "
     399             "fPointSpreadY=%s, fPedesMean=%s, fLow2HighGain=%s, ",
     400             elow.Data(), eupp.Data(), slope.Data(), imax.Data(),
     401             numsimshow, numevents, numphe.Data(),
     402             zBin, thetamin.Data(), thetamax.Data(), psf.Data(),
     403             psfx.Data(), psfy.Data(), ped.Data(), low2high.Data());
     404    vars +=
     405        Form("fAmplFadc=%s, fAmplFadcOuter=%s, fElectricNoise=%s, "
     406             "fDigitalNoise=%s, fRunNumber=%d, fMisspointingX=%s, "
     407             "fMissPointingY=%s, fCorsikaVersionKEY =%d, "
     408             "fReflectorVersionKEY=%d, fCameraVersionKEY=%d, "
     409             "fObservationModeKEY=%d, fMCParticleKEY=%d, "
     410             "fSequenceFirst=0 ",
     411             amplfadc.Data(), amplfadco.Data(), enoise.Data(),
     412             dnoise.Data(), RunNum, misx.Data(), misy.Data(), corsikakey,
     413             reflectorkey, camerakey, observationkey, particlekey);
     414
     415    // Comming soon (-1: dummy, 0: failed, 1: succeeded)
     416    // return serv.InsertUpdate("MCRunData", "fRunNumber", RunData()+1, vars);
     417
     418    if (!serv.ExistStr("fRunNumber", "MCRunData", Run.Data()+1))
     419        if (!serv.Insert("MCRunData", vars)==kFALSE)
     420            return 2;
    666421    else
    667     {
    668 
    669         query = Form(" UPDATE MCRunData SET "
    670                      " fELowLim=%s,"
    671                      " fEUppLim=%s, "
    672                      " fSlopeSpec=%s, "
    673                      " fImpactMax=%s, "
    674                      " fNumSimulatedShowers=%d, "
    675                      " fNumEvents=%d, "
    676                      " fNumPheFromDNSB=%s, "
    677                      " fzbin=%d, "
    678                      " fThetaMin=%s, "
    679                      " fThetaMax=%s, "
    680                      " fPointSpread=%s, "
    681                      " fPointSpreadX=%s, "
    682                      " fPointSpreadY=%s, "
    683                      " fPedesMean=%s, "
    684                      " fLow2HighGain=%s, "
    685                      " fAmplFadc=%s, "
    686                      " fAmplFadcOuter=%s, "
    687                      " fElectricNoise=%s, "
    688                      " fDigitalNoise=%s, "
    689                      " fMisspointingX=%s, "
    690                      " fMissPointingY=%s, "
    691                      " fCorsikaVersionKEY =%d, "
    692                      " fReflectorVersionKEY=%d, "
    693                      " fCameraVersionKEY=%d, "
    694                      " fWobbleModeKEY=%d, "
    695                      " fObservationModeKEY=%d, "
    696                      " fMCParticleKEY=%d, "
    697                      " WHERE fRunNumber=%d ",
    698                      elow.Data(), eupp.Data(), slope.Data(), imax.Data(), numsimshow, numevents, numphe.Data(),
    699                      zBin, thetamin.Data(), thetamax.Data(), psf.Data(), psfx.Data(), psfy.Data(), ped.Data(), low2high.Data(),
    700                      amplfadc.Data(), amplfadco.Data(), enoise.Data(), dnoise.Data(),
    701                      misx.Data(), misy.Data(), corsikakey, reflectorkey, camerakey, wobblekey, observationkey, particlekey, RunNum  );
    702 
    703     }
    704 //
    705 //  not yet implemented
    706 //
    707 
    708 /*
    709         query = Form(" fELowLim=%s,"
    710                      " fEUppLim=%s, "
    711                      " fSlopeSpec=%s, "
    712                      " fImpactMax=%s, "
    713                      " fNumSimulatedShowers=%d, "
    714                      " fNumEvents=%d, "
    715                      " fNumPheFromDNSB=%s, "
    716                      " fzbin=%d, "
    717                      " fThetaMin=%s, "
    718                      " fThetaMax=%s, "
    719                      " fPointSpread=%s, "
    720                      " fPointSpreadX=%s, "
    721                      " fPointSpreadY=%s, "
    722                      " fPedesMean=%s, "
    723                      " fLow2HighGain=%s, "
    724                      " fAmplFadc=%s, "
    725                      " fAmplFadcOuter=%s, "
    726                      " fElectricNoise=%s, "
    727                      " fDigitalNoise=%s, "
    728                      " fMisspointingX=%s, "
    729                      " fMissPointingY=%s, "
    730                      " fCorsikaVersionKEY =%d, "
    731                      " fReflectorVersionKEY=%d, "
    732                      " fCameraVersionKEY=%d, "
    733                      " fWobbleModeKEY=%d, "
    734                      " fObservationModeKEY=%d, "
    735                      " fMCParticleKEY=%d ",
    736                      elow.Data(), eupp.Data(), slope.Data(), imax.Data(), numsimshow, numevents, numphe.Data(),
    737                      zBin, thetamin.Data(), thetamax.Data(), psf.Data(), psfx.Data(), psfy.Data(), ped.Data(), low2high.Data(),
    738                      amplfadc.Data(), amplfadco.Data(), enoise.Data(), dnoise.Data(),
    739                      misx.Data(), misy.Data(), corsikakey, reflectorkey, camerakey, wobblekey, observationkey, particlekey );
    740 
    741     }
    742 */
    743 
    744 
    745 //    if (serv.Update("MCRunData", query, "fRunNumber")==kFALSE)
    746 //        return 2;
    747 
    748 
    749     if (dummy)
    750         return 0;
    751 
    752     TSQLResult *res = serv.Query(query);
    753     if (!res)
    754     {
    755         cout << "ERROR - Query failed: " << query << endl;
    756         return 0;
    757     }
     422        if (!serv.Update("MCRunData", vars, Form("fRunNumber=%d", Run))==kFALSE)
     423            return 2;
    758424
    759425    return 1;
     
    764430    TEnv env("sql.rc");
    765431
    766 //    MSQLServer serv(env);
    767432    MSQLMagic serv(env);
    768433    if (!serv.IsConnected())
    769434    {
    770435        cout << "ERROR - Connection to database failed." << endl;
    771         return 2;
     436        return 0;
    772437    }
    773438
     
    776441    cout << endl;
    777442    cout << "fillcamera" << endl;
    778     cout << "---------" << endl;
     443    cout << "----------" << endl;
    779444    cout << endl;
    780445    cout << "Connected to " << serv.GetName() << endl;
     
    783448
    784449    return Process(serv, fname, dummy);
    785 
    786450}
  • trunk/MagicSoft/Mars/datacenter/scripts/linkmc

    r8482 r8602  
    1919#
    2020#   Author(s): Daniela Dorner  12/2005 <mailto:dorner@astro.uni-wuerzburg.de>
     21#   Author(s): Daniel Hoehne   06/2007 <mailto:hoehne@astro.uni-wuerzburg.de>
    2122#
    2223#   Copyright: MAGIC Software Development, 2000-2007
     
    2829# to a structure from which the files can be processed more easily with the
    2930# automatic analysis.
     31# Furthermore the content of the files is filled in the database running
     32# fillcamera.C.
    3033# This script is not yet running automatically.
    3134#
     
    3841# /magic/montecarlo/rawfiles/README.txt
    3942#
    40 # First the data files are linked and then in each new directory also the
    41 # pedestal and calibration file is linked.
    42 #
     43# First a file is linked and then fillcamera.C is executed. In case of an
     44# error in fillcamera.C the link is removed.
     45# In each new directory also the pedestal and calibration file is linked.
     46#
     47# ========================================================================
     48
    4349
    4450source `dirname $0`/sourcefile
     
    4854set -C
    4955
    50 scriptlog=$runlogpath/$progam-`date +%F`.log
     56scriptlog=$runlogpath/$program-`date +%F`.log
    5157date >> $scriptlog 2>&1
    5258
     
    7076
    7177# observation modes
    72 modes=("" "Gammawobble+" "Gammanowobble0" "GammawobbleHE+" "GammanowobbleHE0" "Gammawobble0" "GammawobbleHE0" "Gammadiffuse0" "Protonnowobble0" )
    73 #be carful:
     78modes=("" "Gammawobble+" "Gammanowobble0" "GammawobbleHE+" "GammanowobbleHE0" "Gammawobble0" "GammawobbleHE0" "Gammadiffuse0" "Protonnowobble0" "ProtonnowobbleHE0")
     79# be careful:
    7480# w- not yet foreseen in this script
    7581
     
    107113
    108114
    109 #get runnumber
     115
    110116runno=`cat $next`
    111117
    112118#get files, which have to be linked
    113 camfiles=`find $mccampath -type f | grep -v Cal_and_Ped`
     119camfiles=`find $mccampath -type f | grep -v Cal_and_Ped | sort`
    114120
    115121printprocesslog "INFO linking new camerafiles starting with runno $runno"
    116122for camfile in ${camfiles[@]}
    117123do
     124
     125
    118126   #continue, if file is already linked
    119    if grep $camfile $processed >> $scriptlog 2>&1
     127   if find $mcpath/* -lname '$mccampath*.root' -printf %l'\n' | grep $camfile >> $scriptlog 2>&1
     128#   if grep $camfile $processed >> $scriptlog 2>&1
    120129   then
    121130      continue
    122131   fi
     132
     133
    123134   printprocesslog "INFO linking $file"
    124135   file=`basename $camfile` #filename
     
    129140   wobble=`echo $file | cut -d_ -f6 | cut -c 2` #mode from filename
    130141   particle=`echo $file | cut -d_ -f1` #particle type from filename
    131    psf=`echo $camfile | cut -d/ -f5 | cut -c 6,8` #psf from path
    132    
    133    particledir=`echo $camfile | cut -d/ -f4` #particletype from path
    134    wobbledir=`echo $camfile | cut -d/ -f6` #mode from path
     142   psf=`echo $camfile | cut -d/ -f6 | cut -c 6,8` #psf from path
     143   
     144   particledir=`echo $camfile | cut -d/ -f5` #particletype from path
     145   wobbledir=`echo $camfile | cut -d/ -f7` #mode from path
    135146   
    136147   #build mode name
     
    167178   echo $runno >| $next
    168179
     180   linkmclogpath=$logpath/$program/$no2
     181   makedir $linkmclogpath >> $scriptlog 2>&1
     182   linkmclog=$linkmclogpath/$program-$no2.log
     183
    169184   #link file
     185   echo "linking file $camfile"
    170186   ln -sv $camfile $newfile >> $scriptlog 2>&1
    171    #add filename to processed file
    172    echo $camfile >> $processed
     187
     188   # run fillcamera.C. In case of success the camfile is written to .processed. In case of an error the link is removed
     189   echo "run fillcamera for mc run $no2" >> $scriptlog 2>&1
     190   check2=`root -q -b $macrospath/fillcamera.C+\("\"$newfile\""\,kTRUE\) | tee $linkmclog | intgrep`
     191   case $check2 in
     192      1)   echo " check2=$check2 -> everything ok " >> $scriptlog 2>&1
     193           printprocesslog "INFO done fillcamera successfully for mc run $no2"
     194           # add filename to .processed
     195           echo $camfile >> $processed
     196           ;;
     197      0)   echo " check2=$check2 -> no connection to db -> continue..." >> $scriptlog 2>&1
     198           printprocesslog "WARN connection to DB failed, removing link"
     199           check="no"
     200           # remove link
     201           rm $newfile >> $scriptlog 2>&1
     202           ;;
     203      *)   echo " check2=$check2 -> ERROR -> step has to be repeated" >> $scriptlog 2>&1
     204           printprocesslog "ERROR fillcamera failed for mc run $no2, removing link"
     205           check=$check2
     206           # remove link
     207           rm $newfile >> $scriptlog 2>&1
     208           ;;
     209   esac
    173210
    174211done
     
    178215#get files
    179216pedfile=`find $mccampath/Cal_and_Ped -name *_P_*.root`
     217
     218
    180219calfile=`find $mccampath/Cal_and_Ped -name *_C_*.root`
     220
     221
    181222echo "calfile"$calfile >> $scriptlog 2>&1
    182223echo "pedfile"$pedfile >> $scriptlog 2>&1
     
    186227then
    187228   "too many files in the directory $mccampath/Cal_and_Ped -> exit" >> $scriptlog 2>&1
     229
     230
     231   rm -v $lockfile >> $scriptlog 2>&1
     232   exit
    188233   printprocesslog "ERROR too many ped and cal files found in $mccampath/Cal_and_Ped"
    189234   finish >> $scriptlog 2>&1
     
    196241do
    197242   #continue, if directory has already linked C and P run
    198    cont=`ls $dir/*_0000[12]_[CP]_MonteCarlo_E.root 2>/dev/null | wc -w`
     243   cont=`ls $dir/*_0000000[12]_[CP]_MonteCarlo_E.root 2>/dev/null | wc -w`
    199244   if [ "$cont" == "2" ] >> $scriptlog 2>&1
    200245   then
Note: See TracChangeset for help on using the changeset viewer.