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

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

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

revision 1.10 by mocchiut, Wed Jun 15 10:04:59 2011 UTC revision 1.12 by mocchiut, Fri Jun 17 11:56:42 2011 UTC
# Line 46  void CaloBragg::Clear(){ Line 46  void CaloBragg::Clear(){
46    lpetot = 0.;    lpetot = 0.;
47    lppskip = 0.;    lppskip = 0.;
48    memset(calorimetro,0,44*2*sizeof(Float_t));    memset(calorimetro,0,44*2*sizeof(Float_t));
49    memset(spessore,0,3*sizeof(Float_t));    memset(spessore,0,4*sizeof(Float_t));
50    memset(estremi,0,2*2*sizeof(Float_t));    memset(estremi,0,2*2*sizeof(Float_t));
51    Integrale=0.;    Integrale=0.;
52    
# Line 367  Float_t CaloBragg::LastIntegral(){ Line 367  Float_t CaloBragg::LastIntegral(){
367    return integ;    return integ;
368  }  }
369    
370    
371  void CaloBragg::Draw(){  void CaloBragg::Draw(){
372    
373    Process();    Process();
374    
375      this->Draw(0.,0.);
376    
377    }
378    
379    void CaloBragg::Draw(Int_t Z, Float_t enetot){
380    
381    //  Float_t dEpianimean[44];    //  Float_t dEpianimean[44];
382    Float_t dEpianiloop[44];    Float_t dEpianiloop[44];
383    Float_t Depth[44];    Float_t Depth[44];
384    //  Int_t tz=(Int_t)qtz;    //  Int_t tz=(Int_t)qtz;
385    Int_t tz1=(Int_t)lpz;    Int_t tz1= Z;
386    //  Enetrack(&tz, &qtetot, &estremi[0][0],&estremi[1][0], dEpianimean);//calcola rilascio energetico sui piani da media troncata    Float_t enet = enetot;
387    Enetrack(&tz1, &lpetot, &estremi[0][0],&estremi[1][0], dEpianiloop);//calcola rilascio energetico sui piani da loop    //  Float_t enet = lpetot;
388      
389      if ( Z > 0. && enetot > 0. ){
390        estremi[0][0] = 0;
391        estremi[1][0] = 43;
392    
393    
394        Float_t    ytgx = 0.;
395        Float_t    ytgy = 0.;
396        
397        //lunghezza effettiva di silicio attraversata (mm)
398        Float_t    SiCross = sqrt(SQ(ySi) + SQ(ytgx) + SQ(ytgy));
399        
400        spessore[0] = (SiCross/10.) * rhoSi; //spessore silicio in g/cm2
401        
402        /*tungsteno*/
403        
404        //rapporto tra rilasci energetici nei due materiali
405        Float_t WCross = sqrt((yW*yW) + (ytgx*ytgx) + (ytgy*ytgy));//mm* rapporto lunghezze rad
406        //gcm2W = WCross/10. * rhoW;
407        
408        //       (g/cm2W)/(g/cm2Si)
409        spessore[3] =  (WCross/10.) * rhoW;
410        Float_t a=(WCross/SiCross)*(rhoW/rhoSi)*(1.145/1.664);  //(gcm2W)/(SiCross/10. * rhoSi)* (1.145/1.664);
411        spessore[1] =  a;
412        //riscala mip allo spessore attraversato
413        spessore[2] = MIP*(SiCross/ySi);  
414    
415      } else {
416        tz1=(Int_t)lpz;
417        enet = lpetot;
418        //  Enetrack(&tz, &qtetot, &estremi[0][0],&estremi[1][0], dEpianimean);//calcola rilascio energetico sui piani da media troncata
419      
420      }
421      Enetrack(&tz1, &enet, &estremi[0][0],&estremi[1][0], dEpianiloop);//calcola rilascio energetico sui piani da loop
422    
423    Float_t sp= spessore[0]*spessore[1];    Float_t sp= spessore[0]*spessore[1];
424    for(Int_t i=0;i<44;i++)Depth[i]=i*sp;    for(Int_t i=0;i<44;i++)Depth[i]=i*sp;
# Line 430  void CaloBragg::Draw(){ Line 471  void CaloBragg::Draw(){
471    //  tc->cd(2);    //  tc->cd(2);
472    tc->cd();    tc->cd();
473    //    //
474    for(Int_t i=0;i<=estremi[1][0];i++)th3->Fill(Depth[i],dEpianiloop[i]);    for(Int_t i=0;i<=estremi[1][0];i++){
475        th3->Fill(Depth[i],dEpianiloop[i]);
476        //    printf(" i %i Depth %f depianiloop %f \n",i,Depth[i],dEpianiloop[i]);
477      }
478    th3->Draw();    th3->Draw();
479    th2->Draw("same");    th2->Draw("same");
480    
# Line 552  void CaloBragg::conversione(){ Line 596  void CaloBragg::conversione(){
596    //gcm2W = WCross/10. * rhoW;    //gcm2W = WCross/10. * rhoW;
597    
598    //       (g/cm2W)/(g/cm2Si)    //       (g/cm2W)/(g/cm2Si)
599    if ( usenewBB ){    spessore[3] =  (WCross/10.) * rhoW;
600      spessore[1] =  (WCross/10.) * rhoW;    a=(WCross/SiCross)*(rhoW/rhoSi)*(1.145/1.664);  //(gcm2W)/(SiCross/10. * rhoSi)* (1.145/1.664);
601    } else {    spessore[1] =  a;
602      //riscala mip allo spessore attraversato
603      a=(WCross/SiCross)*(rhoW/rhoSi)*(1.145/1.664);  //(gcm2W)/(SiCross/10. * rhoSi)* (1.145/1.664);    spessore[2] = MIP*(SiCross/ySi);  
     spessore[1] =  a;  
     //riscala mip allo spessore attraversato  
     spessore[2] = MIP*(SiCross/ySi);    
   };  
604  };//end conversione  };//end conversione
605    
606    
# Line 585  void CaloBragg::BetheBloch(Float_t *x, F Line 625  void CaloBragg::BetheBloch(Float_t *x, F
625    Float_t lg =0.;    Float_t lg =0.;
626    Float_t Energia=0.;    Float_t Energia=0.;
627    Float_t C=0.;    Float_t C=0.;
628    Float_t INo = II;    Float_t INo = ISi;
629    
630    if ( !usenewBB ) INo = ISi;    if ( usenewBB ) INo = II;
631    
632    eta = (*gam)*(*Bet);    eta = (*gam)*(*Bet);
633    
# Line 693  void CaloBragg::Enetrack(Int_t* Z, Float Line 733  void CaloBragg::Enetrack(Int_t* Z, Float
733        Float_t sp = 0.;        Float_t sp = 0.;
734        Float_t II = ISi;        Float_t II = ISi;
735        if ( usenewBB ){        if ( usenewBB ){
736          sp = spessore[1];                  sp = spessore[3];        
737          II = IW;          II = IW;
738        } else {        } else {
739          sp = spessore[0]*spessore[1]; //((gcm2Si)*(WinSi))//spessore attraversato  in g/cm2          sp = spessore[0]*spessore[1]; //((gcm2Si)*(WinSi))//spessore attraversato  in g/cm2
740        }        }
741          //      printf(" sp %f II %f \n",sp,II);
742        ELOSS(&sp, Z, &Ezero, &dE,II);        ELOSS(&sp, Z, &Ezero, &dE,II);
743        if((Ezero-dE) <= Massa){//se l'energia depositata e' maggiore dell'energia della perticella stop        if((Ezero-dE) <= Massa){//se l'energia depositata e' maggiore dell'energia della perticella stop
744          return;          return;

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.23