--- calo/flight/CaloFranzini/src/CaloFranzini.cpp 2008/01/03 10:02:28 1.5 +++ calo/flight/CaloFranzini/src/CaloFranzini.cpp 2008/01/21 10:24:11 1.7 @@ -311,6 +311,14 @@ file->cd(); TString name = Form("fqplmeann%i",bin); file->WriteObject(&(*qpl),name.Data()); + file->Purge(); +} + +void CaloFranzini::WriteFullNMean(TMatrixD *qpl, Int_t bin){ + file->cd(); + TString name = Form("fnqplmeann%i",bin); + file->WriteObject(&(*qpl),name.Data()); + file->Purge(); } void CaloFranzini::WriteInvertedLongMatrix(TMatrixD mat, Int_t bin){ @@ -320,7 +328,7 @@ file->WriteObject(&mat,name.Data()); } -void CaloFranzini::WriteInvertedFullMatrix(TMatrixF mat, Int_t bin){ +void CaloFranzini::WriteInvertedFullMatrix(TMatrixD mat, Int_t bin){ file->cd(); TString name = Form("fmatrixn%i",bin); // mat.Write(name.Data()); @@ -334,11 +342,20 @@ file->WriteObject(&(*mat),name.Data()); } -void CaloFranzini::WriteFullMatrix(TMatrixF *mat, Int_t bin){ +void CaloFranzini::WriteFullMatrix(TMatrixD *mat, Int_t bin){ file->cd(); TString name = Form("origfmatrixn%i",bin); // mat.Write(name.Data()); file->WriteObject(&(*mat),name.Data()); + file->Purge(); +} + +void CaloFranzini::WriteFullNMatrix(TMatrixF *mat, Int_t bin){ + file->cd(); + TString name = Form("origfnmatrixn%i",bin); + // mat.Write(name.Data()); + file->WriteObject(&(*mat),name.Data()); + file->Purge(); } void CaloFranzini::CloseMatrixFile(){ @@ -495,6 +512,77 @@ // } +TMatrixD *CaloFranzini::LoadFullAverage(Int_t rigbin){ + // + TString name = Form("fqplmeann%i",rigbin); + TMatrixD *fmean=(TMatrixD*)file->Get(name.Data()); + // + return(fmean); + // +} + +TMatrixF *CaloFranzini::LoadFullMatrix(Int_t rigbin){ + // + TString name = Form("origfmatrixn%i",rigbin); + TMatrixF *fmatri=(TMatrixF*)file->Get(name.Data()); + // + return(fmatri); + // +} + +void CaloFranzini::LoadFullMatrix(Int_t rigbin, TMatrixF *&fmatri){ + // + TString name = Form("origfmatrixn%i",rigbin); + fmatri=(TMatrixF*)file->Get(name.Data()); + // +} + +void CaloFranzini::UnLoadFullAverage(Int_t rigbin){ + // + TString name = Form("fqplmeann%i",rigbin); + file->Delete(name.Data()); + // +} + +void CaloFranzini::UnLoadFullMatrix(Int_t rigbin){ + // + TString name = Form("origfmatrixn%i",rigbin); + file->Delete(name.Data()); + // +} + +TMatrixF *CaloFranzini::LoadFullNMatrix(Int_t rigbin){ + // + TString name = Form("origfnmatrixn%i",rigbin); + TMatrixF *fnmatri=(TMatrixF*)file->Get(name.Data()); + // + return(fnmatri); + // +} + +void CaloFranzini::UnLoadFullNMatrix(Int_t rigbin){ + // + TString name = Form("origfnmatrixn%i",rigbin); + file->Delete(name.Data()); + // +} + +TMatrixD *CaloFranzini::LoadFullNAverage(Int_t rigbin){ + // + TString name = Form("fnqplmeann%i",rigbin); + TMatrixD *fnmean=(TMatrixD*)file->Get(name.Data()); + // + return(fnmean); + // +} + +void CaloFranzini::UnLoadFullNAverage(Int_t rigbin){ + // + TString name = Form("fnqplmeann%i",rigbin); + file->Delete(name.Data()); + // +} + TArrayF *CaloFranzini::LoadLongAverage(Float_t rig){ // @@ -558,10 +646,17 @@ Float_t b = log(maxene/minene)/(maxrig-minrig); Float_t a = minene/exp(minrig*b); Float_t ave = a*exp(b*rig); + if ( a == 0. || minene == 0. || ave != ave ){ + // if ( a == 0. || minene == 0. ){ + Float_t m = (maxene-minene)/(maxrig-minrig); + Float_t q = minene - m * minrig; + ave = rig * m + q; + }; // return(ave); // } + Float_t CaloFranzini::GetFullAverageAt(Int_t plane, Int_t strip, Float_t rig){ // Int_t therigb = 0; @@ -572,9 +667,6 @@ }; }; // - Float_t minrig; - Float_t maxrig; - // // if ( rig < brigm->At(0) ){ if ( rig < brig->At(0) ){ @@ -589,6 +681,15 @@ therigb = nbin - 3; }; // + return(this->GetFullAverageAt(plane,strip,rig,therigb)); + // +} + +Float_t CaloFranzini::GetFullAverageAt(Int_t plane, Int_t strip, Float_t rig, Int_t therigb){ + // + Float_t minrig; + Float_t maxrig; + // minrig = brigm->At(therigb); maxrig = brigm->At(therigb+1); // @@ -602,6 +703,15 @@ Float_t b = log(maxene/minene)/(maxrig-minrig); Float_t a = minene/exp(minrig*b); Float_t ave = a*exp(b*rig); + if ( a == 0. || minene == 0. || ave != ave ){ + Float_t m = (maxene-minene)/(maxrig-minrig); + Float_t q = minene - m * minrig; + ave = rig * m + q; + }; + // + // ave += (44.-plane)*strip; + //if ( a == 0. ) ave = 0.; + if ( !(ave == ave) ) printf("a %f b %f ave %f maxene %f minene %f maxrig %f minrig %f \n",a,b,ave,maxene,minene,maxrig,minrig); // return(ave); // @@ -673,9 +783,6 @@ }; }; // - Float_t minrig; - Float_t maxrig; - // if ( rig < brigm->At(0) ){ if ( rig < brig->At(0) ){ // printf(" WARNING: Event with rigidity lower than the first qplmean bin (rig = %f, lower limit = %f)\n",rig,brigm->At(0)); @@ -692,6 +799,16 @@ }; // if ( therigb < 2 ) therigb = 2; + // + return(this->GetFullHmatrixAt(iindex,jindex,rig,therigb)); + // +} + +Float_t CaloFranzini::GetFullHmatrixAt(Int_t iindex, Int_t jindex, Float_t rig, Int_t therigb){ + // + Float_t minrig; + Float_t maxrig; + // minrig = brigm->At(therigb); maxrig = brigm->At(therigb+1); // printf(" therigb %i minrig %f maxrig %f rig %f %i i %i j \n",therigb,minrig,maxrig,rig,iindex,jindex); @@ -806,3 +923,47 @@ gStyle->SetNdivisions(1,"XY"); // }; + +Int_t CaloFranzini::ConvertStrip(Int_t mstrip){ + // + Int_t lastrip = 0; + // + if ( mstrip < 50 ) lastrip = 0; + // + if ( mstrip >= 50 && mstrip < 64 ) lastrip = 1; + // + if ( mstrip >= 64 && mstrip < 70 ) lastrip = 2; + // + if ( mstrip >= 70 && mstrip < 75 ) lastrip = 3; + // + if ( mstrip >= 75 && mstrip < 84 ){ + lastrip = (int)trunc((mstrip - 75)/3.) + 4; + }; + // + if ( mstrip >= 84 && mstrip < 90 ){ + lastrip = (int)trunc((mstrip - 84)/2.) + 7; + }; + // + if ( mstrip >= 90 && mstrip < 101 ){ + lastrip = mstrip - 90 + 10; + }; + // + if ( mstrip >= 101 && mstrip < 107 ){ + lastrip = (int)trunc((mstrip - 101)/2.) + 21; + }; + // + // + if ( mstrip >= 107 && mstrip < 116 ){ + lastrip = (int)trunc((mstrip - 107)/3.) + 24; + }; + // + if ( mstrip >= 116 && mstrip < 121 ) lastrip = 27; + // + if ( mstrip >= 121 && mstrip < 127 ) lastrip = 28; + // + if ( mstrip >= 127 && mstrip < 141 ) lastrip = 29; + // + if ( mstrip >= 141 ) lastrip = 30; + // + return(lastrip); +}