/[PAMELA software]/calo/flight/CaloProfile/src/CaloProfile.cpp
ViewVC logotype

Diff of /calo/flight/CaloProfile/src/CaloProfile.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.11 by mocchiut, Thu Aug 13 15:56:39 2009 UTC revision 1.14 by mocchiut, Thu Sep 10 12:53:57 2009 UTC
# Line 281  CaloLat::CaloLat(PamLevel2 *l2p){   Line 281  CaloLat::CaloLat(PamLevel2 *l2p){  
281    PKT = 0;    PKT = 0;
282    atime = 0;    atime = 0;
283    //    //
284      suf = "";
285    debug = false;    debug = false;
286    //    //
287  };  };
# Line 297  Calo2D::Calo2D(PamLevel2 *l2p){   Line 298  Calo2D::Calo2D(PamLevel2 *l2p){  
298    PKT = 0;    PKT = 0;
299    atime = 0;    atime = 0;
300    //    //
301      suf = "";
302    debug = false;    debug = false;
303    //    //
304  };  };
# Line 375  void CaloLat::Draw(Int_t view,Int_t plan Line 377  void CaloLat::Draw(Int_t view,Int_t plan
377    //    //
378    for (Int_t v=minv; v<maxv;v++){    for (Int_t v=minv; v<maxv;v++){
379       for (Int_t p=minp; p<maxp;p++){       for (Int_t p=minp; p<maxp;p++){
380          TString hid = Form("clatv%ip%i",v,p);           TString hid = Form("clatv%ip%i%s",v,p,suf.Data());      
381          TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));          TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));
382          if ( tc ){          if ( tc ){
383  //       tc->Clear();  //       tc->Clear();
# Line 383  void CaloLat::Draw(Int_t view,Int_t plan Line 385  void CaloLat::Draw(Int_t view,Int_t plan
385           tc = new TCanvas(hid,hid);           tc = new TCanvas(hid,hid);
386          };          };
387          //          //
388          TString thid = Form("hlatv%ip%i",v,p);            TString thid = Form("hlatv%ip%i%s",v,p,suf.Data());    
389          TH1F *th  = dynamic_cast<TH1F*>(gDirectory->FindObject(thid));          TH1F *th  = dynamic_cast<TH1F*>(gDirectory->FindObject(thid));
390          if ( th ) th->Delete();          if ( th ) th->Delete();
391  //       th->Clear();  //       th->Clear();
# Line 426  void Calo2D::Draw(Int_t plane){ Line 428  void Calo2D::Draw(Int_t plane){
428    gStyle->SetNdivisions(510,"XY");    gStyle->SetNdivisions(510,"XY");
429    //    //
430    for (Int_t p=minp; p<maxp;p++){    for (Int_t p=minp; p<maxp;p++){
431      TString hid = Form("c2dp%i",p);          TString hid = Form("c2dp%i%s",p,suf.Data());        
432      TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));      TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));
433      if ( tc ){      if ( tc ){
434        //         tc->Clear();        //         tc->Clear();
# Line 434  void Calo2D::Draw(Int_t plane){ Line 436  void Calo2D::Draw(Int_t plane){
436        tc = new TCanvas(hid,hid);        tc = new TCanvas(hid,hid);
437      };      };
438      //      //
439      TString thid = Form("h2dp%i",p);          TString thid = Form("h2dp%i%s",p,suf.Data());      
440      TH2F *th  = dynamic_cast<TH2F*>(gDirectory->FindObject(thid));      TH2F *th  = dynamic_cast<TH2F*>(gDirectory->FindObject(thid));
441      if ( th ) th->Delete();      if ( th ) th->Delete();
442      //   th->Clear();      //   th->Clear();
# Line 671  CaloLong::CaloLong(PamLevel2 *l2p){   Line 673  CaloLong::CaloLong(PamLevel2 *l2p){  
673    umax = 100.;    umax = 100.;
674    slmax = "";    slmax = "";
675    sumax = "";    sumax = "";
676      suf = "";
677    xyaverage = true;    xyaverage = true;
678    //    //
679      letmax = -1;
680      heavytail = false;
681      lmipth = 100.;
682      //
683  };  };
684    
685  void CaloLong::MaskSection(TString sec){  void CaloLong::MaskSection(TString sec){
# Line 971  void CaloLong::SetEnergies(Float_t myene Line 978  void CaloLong::SetEnergies(Float_t myene
978    //    //
979    if ( vmax == 0 ) pmax++;    if ( vmax == 0 ) pmax++;
980    etmax = pmax * X0pl;    etmax = pmax * X0pl;
981      if ( letmax < 0. ) letmax = etmax;
982    //    //
983    if ( debug ) this->Print();    if ( debug ) this->Print();
984    if ( debug ) printf(" exit \n");    if ( debug ) printf(" exit \n");
# Line 995  void CaloLong::Fit(){ Line 1003  void CaloLong::Fit(){
1003    this->Fit(false);    this->Fit(false);
1004  };  };
1005    
1006  Float_t CaloLong::Evaluate(TString s, Float_t tmax){  Float_t CaloLong::Evaluate(TString s, Float_t tmax, Float_t X0pl){
1007    /* SAMPLE OUTPUT:    /* SAMPLE OUTPUT:
1008       Enter Infix Expression : A + B + C / (E - F)       Enter Infix Expression : A + B + C / (E - F)
1009       Postfix Expression is : A B + C E F - / +         Postfix Expression is : A B + C E F - / +  
1010    */      */  
1011    if ( !s.Contains("t") ){    if ( !s.Contains("tmax") && !s.Contains("X0pl") ){
1012      printf(" ERROR, the input formula must contain \"t\"\n");      printf(" ERROR, the input formula must contain \"t\"\n");
1013      return 0.;      return 0.;
1014    };    };
# Line 1009  Float_t CaloLong::Evaluate(TString s, Fl Line 1017  Float_t CaloLong::Evaluate(TString s, Fl
1017      return 0.;      return 0.;
1018    };    };
1019    TString g=Form("%f",tmax);    TString g=Form("%f",tmax);
1020      TString h=Form("%f",X0pl);
1021    TString *ts= new TString("");    TString *ts= new TString("");
1022    ts->Prepend(s.Data());    ts->Prepend(s.Data());
1023    ts->ReplaceAll("t",1,g.Data(),g.Capacity());    ts->ReplaceAll("tmax",4,g.Data(),g.Capacity());
1024      ts->ReplaceAll("X0pl",4,h.Data(),h.Capacity());
1025    ts->Prepend("(");    ts->Prepend("(");
1026    ts->Append(")");    ts->Append(")");
1027    if ( debug )  printf(" ts %s tssize %i capac %i s %s g %s \n",ts->Data(),ts->Sizeof(),ts->Capacity(),s.Data(),g.Data());    if ( debug )  printf(" ts %s tssize %i capac %i s %s g %s \n",ts->Data(),ts->Sizeof(),ts->Capacity(),s.Data(),g.Data());
# Line 1064  void CaloLong::Fit(Bool_t draw){ Line 1074  void CaloLong::Fit(Bool_t draw){
1074      gStyle->SetNdivisions(510,"XY");      gStyle->SetNdivisions(510,"XY");
1075    };    };
1076    //    //
1077    TString hid = Form("clongfit");          TString hid = Form("clongfit%s",suf.Data());  
1078    TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));    TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));
1079    //  if ( tc ) tc->Delete();    //  if ( tc ) tc->Delete();
1080    //  if ( tc ) tc->Close();    //  if ( tc ) tc->Close();
# Line 1074  void CaloLong::Fit(Bool_t draw){ Line 1084  void CaloLong::Fit(Bool_t draw){
1084      if ( tc ) tc->cd();      if ( tc ) tc->cd();
1085    };    };
1086    //    //
1087    TString thid = Form("hlongfit");          TString thid = Form("hlongfit%s",suf.Data());
1088    TH2F *th  = dynamic_cast<TH2F*>(gDirectory->FindObject(thid));    TH2F *th  = dynamic_cast<TH2F*>(gDirectory->FindObject(thid));
1089    if ( th ) th->Delete();    if ( th ) th->Delete();
1090    //    //
1091    TString ghid = Form("glongfit");          TString ghid = Form("glongfit%s",suf.Data());
1092    TGraphErrors *gh  = dynamic_cast<TGraphErrors*>(gDirectory->FindObject(ghid));    TGraphErrors *gh  = dynamic_cast<TGraphErrors*>(gDirectory->FindObject(ghid));
1093    if ( gh ) gh->Delete();    if ( gh ) gh->Delete();
1094    //    //
# Line 1150  void CaloLong::Fit(Bool_t draw){ Line 1160  void CaloLong::Fit(Bool_t draw){
1160          exx[numpo] = 0.1;          exx[numpo] = 0.1;
1161          yyy[numpo] = enemip;          yyy[numpo] = enemip;
1162          eyy[numpo] = sqrt(enemip*3.)+sqrt(5.);          eyy[numpo] = sqrt(enemip*3.)+sqrt(5.);
1163            if ( xpos > letmax && enemip > lmipth && heavytail) eyy[numpo] = (sqrt(enemip*3.)+sqrt(5.))/numpo;
1164          numpo++;          numpo++;
1165          //      th->Fill(xpos,enemip);          //      th->Fill(xpos,enemip);
1166          if ( debug ) printf(" AVE Filling: st %i xpos %f energy %f \n",st,xpos,enemip);          if ( debug ) printf(" AVE Filling: st %i xpos %f energy %f \n",st,xpos,enemip);
# Line 1182  void CaloLong::Fit(Bool_t draw){ Line 1193  void CaloLong::Fit(Bool_t draw){
1193            exx[numpo] = 0.1;            exx[numpo] = 0.1;
1194            yyy[numpo] = enemip;            yyy[numpo] = enemip;
1195            eyy[numpo] = sqrt(enemip*3.)+sqrt(5.);            eyy[numpo] = sqrt(enemip*3.)+sqrt(5.);
1196            if ( xpos > letmax && enemip > lmipth && heavytail ) eyy[numpo] = (sqrt(enemip*3.)+sqrt(5.))/numpo;
1197            //      eyy[numpo] = sqrt(enemip)/(st*0.95);            //      eyy[numpo] = sqrt(enemip)/(st*0.95);
1198            numpo++;            numpo++;
1199            //      th->Fill(xpos,enemip);            //      th->Fill(xpos,enemip);
# Line 1218  void CaloLong::Fit(Bool_t draw){ Line 1230  void CaloLong::Fit(Bool_t draw){
1230    //  th = new TH2F(thid,thid,int(NC*1.5),-0.2,xmax);    //  th = new TH2F(thid,thid,int(NC*1.5),-0.2,xmax);
1231    th = new TH2F(thid,thid,1000,-0.2,xmax,1000,0.,emax*1.2);    th = new TH2F(thid,thid,1000,-0.2,xmax,1000,0.,emax*1.2);
1232    gh = new TGraphErrors(numpo,xxx,yyy,exx,eyy);    gh = new TGraphErrors(numpo,xxx,yyy,exx,eyy);
1233    TF1 *lfit  = dynamic_cast<TF1*>(gDirectory->FindObject("lfit"));    TString fnam=Form("lfit%s",suf.Data());
1234      TF1 *lfit  = dynamic_cast<TF1*>(gDirectory->FindObject(fnam));
1235    if ( lfit ) lfit->Delete();    if ( lfit ) lfit->Delete();
1236    lfit = new TF1("lfit",ccurve,0.,xmax,3);    lfit = new TF1(fnam,ccurve,0.,xmax,3);
1237    if ( debug ) printf("qtot %f qtotparz %f \n",clp->qtot,qtotparz);    if ( debug ) printf("qtot %f qtotparz %f \n",clp->qtot,qtotparz);
1238    E0 = qtotparz;    E0 = qtotparz;
1239    //  E0 = clp->qtot;    //  E0 = clp->qtot;
# Line 1231  void CaloLong::Fit(Bool_t draw){ Line 1244  void CaloLong::Fit(Bool_t draw){
1244    //  lfit->SetParLimits(0,0.,1000.);    //  lfit->SetParLimits(0,0.,1000.);
1245    //  lfit->SetParLimits(1,-1.,80.);    //  lfit->SetParLimits(1,-1.,80.);
1246    //  lfit->SetParLimits(2,-1.,10.);    //  lfit->SetParLimits(2,-1.,10.);
1247    //  TString optio = "ROW"; // "RO"    // TString optio = "ROW"; // "RO"
1248    TString optio = "RO"; // "RO"    TString optio = "RO"; // "RO"
1249    if ( debug ){    if ( debug ){
1250      optio += "NV";      optio += "NV";
# Line 1241  void CaloLong::Fit(Bool_t draw){ Line 1254  void CaloLong::Fit(Bool_t draw){
1254      if ( draw ) optio += "Q";      if ( draw ) optio += "Q";
1255    };    };
1256    //    //
1257    if ( debug ) printf(" OK, start the fitting procedure...\n");    if ( debug ) printf(" OK, start the fitting procedure... options: %s \n",optio.Data());
1258    //    //
1259    //  fitresult = th->Fit("lfit",optio);    //  fitresult = th->Fit("lfit",optio);
1260    fitresult = gh->Fit("lfit",optio);    fitresult = gh->Fit("lfit",optio);
# Line 1265  void CaloLong::Fit(Bool_t draw){ Line 1278  void CaloLong::Fit(Bool_t draw){
1278      asymm = -1.;      asymm = -1.;
1279      defE0 = -1.;      defE0 = -1.;
1280    } else {    } else {
1281      if ( slmax.MaybeRegexp() ) lmax = this->Evaluate(slmax,tmax);      if ( slmax.MaybeRegexp() ) lmax = this->Evaluate(slmax,tmax,X0pl);
1282      if ( sumax.MaybeRegexp() ) umax = this->Evaluate(sumax,tmax);      if ( sumax.MaybeRegexp() ) umax = this->Evaluate(sumax,tmax,X0pl);
1283      Int_t npp = 1000;      Int_t npp = 1000;
1284      double *xpp=new double[npp];      double *xpp=new double[npp];
1285      double *wpp=new double[npp];      double *wpp=new double[npp];
# Line 1367  void CaloLong::Draw(Int_t view){ Line 1380  void CaloLong::Draw(Int_t view){
1380    //    //
1381    if ( maxv != -1 ){    if ( maxv != -1 ){
1382      for (Int_t v=minv; v<maxv;v++){      for (Int_t v=minv; v<maxv;v++){
1383        TString hid = Form("clongv%i",v);        TString hid = Form("clongv%i%s",v,suf.Data());    
1384        TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));        TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));
1385        if ( tc ){        if ( tc ){
1386          //       tc->Clear();          //       tc->Clear();
# Line 1375  void CaloLong::Draw(Int_t view){ Line 1388  void CaloLong::Draw(Int_t view){
1388          tc = new TCanvas(hid,hid);          tc = new TCanvas(hid,hid);
1389        };        };
1390        //        //
1391        TString thid = Form("hlongv%i",v);                TString thid = Form("hlongv%i%s",v,suf.Data());  
1392        TH1F *th  = dynamic_cast<TH1F*>(gDirectory->FindObject(thid));        TH1F *th  = dynamic_cast<TH1F*>(gDirectory->FindObject(thid));
1393        if ( th ) th->Delete();        if ( th ) th->Delete();
1394        //         th->Clear();        //         th->Clear();
# Line 1394  void CaloLong::Draw(Int_t view){ Line 1407  void CaloLong::Draw(Int_t view){
1407      };      };
1408    } else {    } else {
1409      //      //
1410      TString hid = Form("clongvyvx");          TString hid = Form("clongvyvx%s",suf.Data());      
1411      TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));      TCanvas *tc  = dynamic_cast<TCanvas*>(gDirectory->FindObject(hid));
1412      if ( tc ){      if ( tc ){
1413      } else {      } else {
1414        tc = new TCanvas(hid,hid);        tc = new TCanvas(hid,hid);
1415      };      };
1416      //      //
1417      TString thid = Form("hlongvyvx");        TString thid = Form("hlongvyvx%s",suf.Data());      
1418      TH1F *th  = dynamic_cast<TH1F*>(gDirectory->FindObject(thid));      TH1F *th  = dynamic_cast<TH1F*>(gDirectory->FindObject(thid));
1419      if ( th ) th->Delete();      if ( th ) th->Delete();
1420      th = new TH1F(thid,thid,44,-0.5,43.5);      th = new TH1F(thid,thid,44,-0.5,43.5);

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.23