00001
00002
00003
00004
00006
00007
00008
00009
00010
00011
00012
00013
00014
00016
00017
00018 #include <Riostream.h>
00019
00020 #include "TFndHdt.h"
00021 #include "TFndSilMon.h"
00022
00023 ClassImp(TFndSilMon)
00024
00025
00026 TFndSilMon::TFndSilMon():
00027 shmflg(),fout(),fDet(),fsil(),msil(),
00028 fMustRecoverHistos(),fSharedMemName(),fSharedFileName(),
00029 fH_Sil_Noise(),fH_Sil_Mult(),fH_Sil_ClCh(),fH_Sil_CMsigma(),fH_Sil_CMmean(),
00030 fH_Sil_CleanMult(),fH_Sil_ClChClean(),fH_Sil_dEdx(),fH_Sil_dEdx_PvsZ(),fH_Sil_Pos_PvsZ()
00031 {
00032
00033 Init();
00034
00035 }
00036
00037
00038 TFndSilMon::TFndSilMon(const TString &fmode, Int_t det):
00039 shmflg(),fout(),fDet(det),fsil(),msil(),
00040 fMustRecoverHistos(),fSharedMemName(),fSharedFileName(),
00041 fH_Sil_Noise(),fH_Sil_Mult(),fH_Sil_ClCh(),fH_Sil_CMsigma(),fH_Sil_CMmean(),
00042 fH_Sil_CleanMult(),fH_Sil_ClChClean(),fH_Sil_dEdx(),fH_Sil_dEdx_PvsZ(),fH_Sil_Pos_PvsZ()
00043 {
00044
00045
00046 Init();
00047 OpenSharedFiles(fmode);
00048 InitHistos();
00049
00050 }
00051
00052
00053 TFndSilMon::~TFndSilMon() {
00054
00055
00056 for(Int_t lay =0 ; lay <=1 ; lay ++){
00057 for(Int_t mod = 0; mod < K_N_Sil_Modules; mod++){
00058 for(Int_t sid = 0; sid < K_N_Sil_Sides; sid++){
00059 delete fH_Sil_Noise[lay][mod][sid];
00060 delete fH_Sil_Mult[lay][mod][sid];
00061 delete fH_Sil_ClCh[lay][mod][sid];
00062 delete fH_Sil_CMsigma[lay][mod][sid];
00063 delete fH_Sil_CMmean[lay][mod][sid];
00064 if(sid<2){
00065 delete fH_Sil_CleanMult[lay][mod][sid];
00066 delete fH_Sil_ClChClean[lay][mod][sid];
00067 delete fH_Sil_dEdx[lay][mod][sid];
00068 }
00069 }
00070 delete fH_Sil_dEdx_PvsZ[lay][mod];
00071 delete fH_Sil_Pos_PvsZ[lay][mod];
00072 }
00073 }
00074
00075
00076
00077 if(! shmflg) {
00078 if(fsil && fsil->IsOpen()) fsil->Close();
00079 delete fsil;
00080 }
00081
00082 if(fout && fout->IsOpen()) fsil->Close();
00083 delete fout;
00084
00085 if(msil){ msil->Close(); msil = 0;}
00086 else delete msil;
00087 }
00088
00089
00090 void TFndSilMon::Init() {
00091
00092 fSharedMemName[0] = FROOT::ExpandPathName("$FND_SHR/ism.map");
00093 fSharedMemName[1] = FROOT::ExpandPathName("$FND_SHR/osm.map");
00094 fSharedFileName[0]= FROOT::ExpandPathName("ism.file.map");
00095 fSharedFileName[1]= FROOT::ExpandPathName("osm.file.map");
00096
00097 }
00098
00099
00100 void TFndSilMon::OpenSharedFiles(const TString &fmode) {
00101
00102 shmflg = fndrun->Onlflg();
00103 cout << "Sil Shm flag is " << shmflg << endl;
00104
00105 TString fsilnam = (fmode.IsNull())? "ONLM" : fmode;
00106 if(fDet == (Int_t) E_FIN_INNER_LAYER) fsilnam+="_ism.root";
00107 else if(fDet == (Int_t) E_FIN_OUTER_LAYER) fsilnam+="_osm.root";
00108 else cout << "Wrong detector number" << endl;
00109 fsil = new TFile(fsilnam.Data(),"RECREATE","Sil Histogram File");
00110
00111
00112 if(shmflg) {
00113 cout << "create shared memory" << endl;
00114 switch(fDet){
00115 case (Int_t) E_FIN_INNER_LAYER:
00116 #if defined _FND_ONL_USE_MAP_FILES_
00117 msil = TMapFile::Create(fSharedMemName[0],"RECREATE",(Int_t)(1048576*FROOT::K_IsimMapSize),"Isim memory mapped file with histograms");
00118 #elif defined _FND_ONL_USE_SHARED_FILES_
00119 if(gSystem->AccessPathName(fSharedFileName[0])){
00120 cout << "Shared file missing: creating it now..." << endl;
00121 msil = new TFile(fSharedFileName[0],"RECREATE");
00122 }
00123 else{
00124 cout << "Shared file found: histograms will be recovered..." << endl;
00125 msil = TFile::Open(fSharedFileName[0],"UPDATE");
00126 fMustRecoverHistos = kTRUE;
00127
00128 }
00129 #endif
00130 break;
00131 case (Int_t) E_FIN_OUTER_LAYER:
00132 #if defined _FND_ONL_USE_MAP_FILES_
00133 msil = TMapFile::Create(fSharedMemName[1],"RECREATE",(Int_t)(1048576*FROOT::K_OsimMapSize),"Osim memory mapped file with histograms");
00134 #elif defined _FND_ONL_USE_SHARED_FILES_
00135 if(gSystem->AccessPathName(fSharedFileName[1])){
00136 cout << "Shared file missing: creating it now..." << endl;
00137 msil = new TFile(fSharedFileName[1],"RECREATE");
00138 }
00139 else{
00140 cout << "Shared file found: histograms will be recovered..." << endl;
00141 msil = TFile::Open(fSharedFileName[1],"UPDATE");
00142 fMustRecoverHistos = kTRUE;
00143
00144 }
00145 #endif
00146 break;
00147 default:
00148 Error("","Wrong detector number (%d)",fDet);
00149 msil = 0;
00150 TerminateFroot();
00151 }
00152 if(msil) msil->Print();
00153 }
00154
00155 }
00156
00157
00158 void TFndSilMon::InitHistos() {
00159
00160 TString hnam = "";
00161 TString htit = "";
00162
00163 Float_t patt_edges[2] = { -0.5 , 1023.5};
00164 Float_t clus_edges[2] = { -0.5 , 1023.5};
00165 Float_t CM_edges[2] = { -0.5 , 7.5};
00166
00167 Int_t patt_bins = (Int_t)( patt_edges[1] - patt_edges[0] );
00168 Int_t clus_bins = (Int_t)( clus_edges[1] - clus_edges[0] );
00169 Int_t CM_bins = (Int_t)( CM_edges[1] - CM_edges[0] );
00170
00171 if(shmflg) msil->cd();
00172
00173 TString CluHNam = "";
00174 TString CluHTit = "";
00175
00176 TString det_nam = "";
00177 Int_t lay_idx = 0;
00178 if(fDet == (Int_t) E_FIN_INNER_LAYER ){
00179 lay_idx = 0;
00180 det_nam = "Isim";
00181 }
00182 else{
00183 lay_idx = 1;
00184 det_nam = "Osim";
00185 }
00186
00187 for(Int_t mod = 0; mod < K_N_Sil_Modules; mod++){
00188 if(fDet == (Int_t) E_FIN_INNER_LAYER && mod > 7) break;
00189 for(Int_t sid = 0; sid < K_N_Sil_Sides; sid++){
00190
00191 hnam.Form("%sNoise_%d_%s",det_nam.Data(),mod+1,SilSide_Name(sid).Data());
00192 htit.Form("%s Noise (mod %d, side %s)",det_nam.Data(),mod+1,SilSide_Name(sid).Data());
00193 fH_Sil_Noise[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00194 ((TH1F*) (msil->Get(hnam))) :
00195 new TH1F(hnam,htit,patt_bins,patt_edges[0],patt_edges[1]);
00196
00197 hnam.Replace(4,5,"Mult");
00198 htit.Replace(5,5,"Mult");
00199 fH_Sil_Mult[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00200 ((TH1F*) (msil->Get(hnam))) :
00201 new TH1F(hnam,htit,patt_bins,patt_edges[0],patt_edges[1]);
00202
00203 hnam.Replace(4,4,"ClustCharge");
00204 htit.Replace(5,4,"Clust-Charge");
00205 fH_Sil_ClCh[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00206 ((TH1F*) (msil->Get(hnam))) :
00207 new TH1F(hnam,htit,clus_bins,clus_edges[0],clus_edges[1]);
00208
00209 hnam.Replace(4,11,"CM_sigma");
00210 htit.Replace(5,12,"CM sigma");
00211 fH_Sil_CMsigma[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00212 ((TH1F*) (msil->Get(hnam))) :
00213 new TH1F(hnam,htit,CM_bins,CM_edges[0],CM_edges[1]);
00214
00215 hnam.Replace(4,8,"CM_mean");
00216 htit.Replace(5,8,"CM mean");
00217 fH_Sil_CMmean[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00218 ((TH1F*) (msil->Get(hnam))) :
00219 new TH1F(hnam,htit,CM_bins,CM_edges[0],CM_edges[1]);
00220
00221 if(sid < 2){
00222 TString sidnam = ( sid == 0 ) ? "PHI" : "Z";
00223
00224 CluHNam.Form("%s_CleanMult_%d_%s",det_nam.Data(),mod+1,sidnam.Data() );
00225 CluHTit.Form("%s Clean Mult. (mod %d, side %s)",det_nam.Data(),mod+1,sidnam.Data() );
00226 fH_Sil_CleanMult[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00227 ((TH1F*) (msil->Get(CluHNam))) :
00228 new TH1F(CluHNam,CluHTit,clus_bins,clus_edges[0], ( (sid+1) * clus_edges[1]) + (sid * 0.5) );
00229
00230 CluHNam.Form("%s_ClustChClean_%d_%s",det_nam.Data(),mod+1,sidnam.Data() );
00231 CluHTit.Form("%s Clust.Charge Clean (mod %d, side %s)",det_nam.Data(),mod+1,sidnam.Data() );
00232 fH_Sil_ClChClean[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00233 ((TH1F*) (msil->Get(CluHNam))) :
00234 new TH1F(CluHNam,CluHTit,clus_bins,clus_edges[0],clus_edges[1] );
00235
00236 CluHNam.Form("%s_dEdx_%d_%s",det_nam.Data(),mod+1,sidnam.Data() );
00237 CluHTit.Form("%s dEdx (mod %d, side %s)",det_nam.Data(),mod+1,sidnam.Data() );
00238 fH_Sil_dEdx[lay_idx][mod][sid] = (fMustRecoverHistos) ?
00239 ((TH1F*) (msil->Get(CluHNam))) :
00240 new TH1F(CluHNam,CluHTit,clus_bins,clus_edges[0],clus_edges[1]);
00241 }
00242
00243 if(sid == 0){
00244 CluHNam.Form("%s_dEdx_PvsZ_%d",det_nam.Data(),mod+1 );
00245 CluHTit.Form("%s dEdx PvsZ (mod %d)",det_nam.Data(),mod+1 );
00246 fH_Sil_dEdx_PvsZ[lay_idx][mod] = (fMustRecoverHistos) ?
00247 ((TH2F*) (msil->Get(CluHNam))) :
00248 new TH2F(CluHNam,CluHTit,200,clus_edges[0],clus_edges[1],200,clus_edges[0],clus_edges[1]);
00249
00250 CluHNam.Form("%s_Pos_PvsZ_%d",det_nam.Data(),mod+1 );
00251 CluHTit.Form("%s Pos PvsZ (mod %d)",det_nam.Data(),mod+1 );
00252
00253 fH_Sil_Pos_PvsZ[lay_idx][mod] = (fMustRecoverHistos) ?
00254 ((TH2F*) (msil->Get(CluHNam))) :
00255 new TH2F(CluHNam,CluHTit,982,-9.82,9.82,526,-2.63,2.63);
00256 }
00257
00258
00259 }
00260 }
00261
00262
00263
00264
00265 if(fDet == (Int_t) E_FIN_INNER_LAYER){
00266 for(Int_t nchip = 0; nchip < (Int_t) K_N_Sil_AdcChips; nchip++)
00267 for(Int_t nside = 0; nside < (Int_t) K_N_Sil_Sides; nside++)
00268 for(Int_t nmod = 1; nmod < (Int_t) K_N_Sil_Modules+1; nmod++)
00269 SetZeroCommonMode(nchip,nside,nmod,1);
00270 } else if(fDet == (Int_t) E_FIN_OUTER_LAYER) {
00271 for(Int_t nchip = 0; nchip < (Int_t) K_N_Sil_AdcChips; nchip++)
00272 for(Int_t nside = 0; nside < (Int_t) K_N_Sil_Sides; nside++)
00273 for(Int_t nmod = 1; nmod < (Int_t) K_N_Sil_Modules+1; nmod++)
00274 SetZeroCommonMode(nchip,nside,nmod,2);
00275 }
00276
00277 }
00278
00279
00280 void TFndSilMon::Fill() {
00281
00282 TClonesArray *cl = fndrun->GetCurrentHdt()->GetSilClusters();
00283 Fill(*cl);
00284
00285 }
00286
00287
00288 void TFndSilMon::Fill(const TClonesArray &SilClus) {
00289
00290 Int_t nhits = SilClus.GetEntries();
00291
00292 if(fDet == (Int_t) E_FIN_INNER_LAYER){
00293 for(Int_t mod = 0; mod < 8; mod++){
00294 for(Int_t sid = 0; sid < K_N_Sil_Sides; sid++){
00295
00296
00297 for (Int_t bina=1; bina <= fH_Sil_Noise[0][mod][sid]->GetNbinsX(); bina++) {
00298 fH_Sil_Noise[0][mod][sid]->SetBinContent(bina,((TFndRun::fgFinHdt->GetSilNoise(bina-1,sid,mod+1,1) != 0) ? ((Double_t) TFndRun::fgFinHdt->GetSilNoise(bina-1,sid,mod+1,1) / (Double_t) K_N_Sil_MulNoise) : 0 ));
00299
00300 }
00301
00302 for (Int_t bina=1; bina <= fH_Sil_CMsigma[0][mod][sid]->GetNbinsX(); bina++) {
00303 FillCommonMode(bina-1,sid,mod+1,1,TFndRun::fgFinHdt->GetIntSilComMod_mean(bina-1,sid,mod+1,1)) ;
00304 fH_Sil_CMsigma[0][mod][sid]->SetBinContent(bina, GetSigmaCommonMode(bina-1,sid,mod+1,1));
00305 fH_Sil_CMmean[0][mod][sid]->SetBinContent(bina, GetMeanCommonMode(bina-1,sid,mod+1,1));
00306 }
00307 }
00308 }
00309
00310 }
00311
00312 else if(fDet == (Int_t) E_FIN_OUTER_LAYER){
00313 for(Int_t mod = 0; mod < K_N_Sil_Modules; mod++){
00314 for(Int_t sid = 0; sid < K_N_Sil_Sides; sid++){
00315
00316
00317 for (Int_t bina=1; bina <= fH_Sil_Noise[1][mod][sid]->GetNbinsX(); bina++) {
00318 fH_Sil_Noise[1][mod][sid]->SetBinContent(bina,((TFndRun::fgFinHdt->GetSilNoise(bina-1,sid,mod+1,2) != 0) ? ((Double_t) TFndRun::fgFinHdt->GetSilNoise(bina-1,sid,mod+1,2) / (Double_t) K_N_Sil_MulNoise) : 0 ));
00319
00320 }
00321
00322 for (Int_t bina=1; bina <= fH_Sil_CMsigma[1][mod][sid]->GetNbinsX(); bina++) {
00323 FillCommonMode(bina-1,sid,mod+1,2,TFndRun::fgFinHdt->GetIntSilComMod_mean(bina-1,sid,mod+1,2)) ;
00324 fH_Sil_CMsigma[1][mod][sid]->SetBinContent(bina, GetSigmaCommonMode(bina-1,sid,mod+1,2));
00325 fH_Sil_CMmean[1][mod][sid]->SetBinContent(bina, GetMeanCommonMode(bina-1,sid,mod+1,2));
00326 }
00327 }
00328 }
00329
00330 }
00331
00332 else{
00333 Error("Fill","Wrong layer selected");
00334 TerminateFroot();
00335 }
00336
00338
00340
00341 TFndHSilCluster *hsil = 0;
00342 for (Int_t j=0; j<nhits; j++) {
00343 hsil = (TFndHSilCluster*) SilClus[j];
00344
00345
00346
00347
00348 if(fDet != hsil->GetLayer()) continue;
00349
00350
00351 if(fDet == (Int_t) E_FIN_INNER_LAYER){
00352
00353
00354
00355 if (hsil->GetPhiClusterSignal() > -1.) fH_Sil_ClCh[0][hsil->GetModNum() - 1][0]->Fill(hsil->GetPhiClusterSignal());
00356 if (hsil->GetZetaClusterSignal() > -1.) fH_Sil_ClCh[0][hsil->GetModNum() - 1][( hsil->GetClusterZetaAdcCh() < (Float_t) K_N_Sil_AdcCha) ? 1 : 2]->Fill(hsil->GetZetaClusterSignal()) ;
00357 if (hsil->GetClusterPhiAdcCh() > -1.) fH_Sil_Mult[0][hsil->GetModNum() - 1][0]->Fill(hsil->GetClusterPhiAdcCh()) ;
00358 if (hsil->GetClusterZetaAdcCh() > -1.) fH_Sil_Mult[0][hsil->GetModNum() - 1][( hsil->GetClusterZetaAdcCh() < (Float_t) K_N_Sil_AdcCha) ? 1 : 2]->Fill(( hsil->GetClusterZetaAdcCh() < (Float_t) K_N_Sil_AdcCha) ? hsil->GetClusterZetaAdcCh() : hsil->GetClusterZetaAdcCh() - (Float_t) K_N_Sil_AdcCha) ;
00359
00360 if(hsil->GetGoodCl() == 1){
00361 fH_Sil_CleanMult[0][hsil->GetModNum() - 1][0]->Fill( hsil->GetClusterPhiAdcCh() );
00362 fH_Sil_CleanMult[0][hsil->GetModNum() - 1][1]->Fill( hsil->GetClusterZetaAdcCh() );
00363 fH_Sil_ClChClean[0][hsil->GetModNum() - 1][0]->Fill( hsil->GetPhiClusterSignal() );
00364 fH_Sil_ClChClean[0][hsil->GetModNum() - 1][1]->Fill( hsil->GetZetaClusterSignal() ) ;
00365 fH_Sil_dEdx[0][hsil->GetModNum() - 1][0] ->Fill( hsil->GetDEDxPhi() );
00366 fH_Sil_dEdx[0][hsil->GetModNum() - 1][1] ->Fill( hsil->GetDEDxZeta() ) ;
00367 fH_Sil_dEdx_PvsZ[0][hsil->GetModNum() - 1] ->Fill( hsil->GetDEDxZeta(),hsil->GetDEDxPhi() );
00368 fH_Sil_Pos_PvsZ[0][hsil->GetModNum() - 1] ->Fill( hsil->GetLocal_Z(),hsil->GetLocal_Y() );
00369 }
00370
00371 }
00372 else if(fDet == (Int_t) E_FIN_OUTER_LAYER){
00373
00374 if (hsil->GetPhiClusterSignal() > -1.) fH_Sil_ClCh[1][hsil->GetModNum() - 1][0]->Fill(hsil->GetPhiClusterSignal());
00375 if (hsil->GetZetaClusterSignal() > -1.) fH_Sil_ClCh[1][hsil->GetModNum() - 1][( hsil->GetClusterZetaAdcCh() < (Float_t) K_N_Sil_AdcCha) ? 1 : 2]->Fill(hsil->GetZetaClusterSignal()) ;
00376 if (hsil->GetClusterPhiAdcCh() > -1.) fH_Sil_Mult[1][hsil->GetModNum() - 1][0]->Fill(hsil->GetClusterPhiAdcCh()) ;
00377 if (hsil->GetClusterZetaAdcCh() > -1.) fH_Sil_Mult[1][hsil->GetModNum() - 1][( hsil->GetClusterZetaAdcCh() < (Float_t) K_N_Sil_AdcCha) ? 1 : 2]->Fill(( hsil->GetClusterZetaAdcCh() < (Float_t) K_N_Sil_AdcCha) ? hsil->GetClusterZetaAdcCh() : hsil->GetClusterZetaAdcCh() - (Float_t) K_N_Sil_AdcCha) ;
00378
00379 if(hsil->GetGoodCl() == 1){
00380 fH_Sil_CleanMult[1][hsil->GetModNum() - 1][0]->Fill( hsil->GetClusterPhiAdcCh() );
00381 fH_Sil_CleanMult[1][hsil->GetModNum() - 1][1]->Fill( hsil->GetClusterZetaAdcCh() );
00382 fH_Sil_ClChClean[1][hsil->GetModNum() - 1][0]->Fill( hsil->GetPhiClusterSignal() );
00383 fH_Sil_ClChClean[1][hsil->GetModNum() - 1][1]->Fill( hsil->GetZetaClusterSignal() ) ;
00384 fH_Sil_dEdx[1][hsil->GetModNum() - 1][0] ->Fill( hsil->GetDEDxPhi() );
00385 fH_Sil_dEdx[1][hsil->GetModNum() - 1][1] ->Fill( hsil->GetDEDxZeta() ) ;
00386 fH_Sil_dEdx_PvsZ[1][hsil->GetModNum() - 1] ->Fill( hsil->GetDEDxZeta(),hsil->GetDEDxPhi() );
00387 fH_Sil_Pos_PvsZ[1][hsil->GetModNum() - 1] ->Fill( hsil->GetLocal_Z(),hsil->GetLocal_Y() );
00388 }
00389 }
00390 else{
00391 Error("Fill","Wrong layer selected");
00392 TerminateFroot();
00393 }
00394
00395 }
00396
00397 }
00398
00399
00400 void TFndSilMon::Update(Bool_t purge) {
00401 if(!shmflg) return;
00402 #if defined _FND_ONL_USE_MAP_FILES_
00403 if( msil && msil->IsWritable() ) msil->Update();
00404 #elif defined _FND_ONL_USE_SHARED_FILES_
00405
00406 WriteToFile(0,kTRUE);
00407
00408 msil->cd();
00409
00410 if(purge) msil->Purge();
00411
00412 msil->Flush();
00413
00414
00415
00416
00417
00418 TString comm_cp = "";
00419 comm_cp.Form("cp ./ism.file.map %s",FROOT::ExpandPathName("$FND_SHR/ism.file.map").Data());
00420 gSystem->Exec(comm_cp);
00421 comm_cp.Form("cp ./osm.file.map %s",FROOT::ExpandPathName("$FND_SHR/osm.file.map").Data());
00422 gSystem->Exec(comm_cp);
00423 #endif
00424
00425 Info("Update","SIL histograms updated (producer)");
00426
00427 }
00428
00429
00430 void TFndSilMon::ResetHistos(){
00431
00432
00433
00434 for(Int_t lay =0 ; lay <=1 ; lay ++){
00435 for(Int_t mod = 0; mod < K_N_Sil_Modules; mod++){
00436 for(Int_t sid = 0; sid < K_N_Sil_Sides; sid++){
00437 if(fH_Sil_Noise[lay][mod][sid]) fH_Sil_Noise[lay][mod][sid]->Reset();
00438 if(fH_Sil_Mult[lay][mod][sid]) fH_Sil_Mult[lay][mod][sid]->Reset();
00439 if(fH_Sil_ClCh[lay][mod][sid]) fH_Sil_ClCh[lay][mod][sid]->Reset();
00440 if(fH_Sil_CMsigma[lay][mod][sid]) fH_Sil_CMsigma[lay][mod][sid]->Reset();
00441 if(fH_Sil_CMmean[lay][mod][sid]) fH_Sil_CMmean[lay][mod][sid]->Reset();
00442 if(sid<2){
00443 if(fH_Sil_CleanMult[lay][mod][sid]) fH_Sil_CleanMult[lay][mod][sid]->Reset();
00444 if(fH_Sil_ClChClean[lay][mod][sid]) fH_Sil_ClChClean[lay][mod][sid]->Reset();
00445 if(fH_Sil_dEdx[lay][mod][sid]) fH_Sil_dEdx[lay][mod][sid]->Reset();
00446 }
00447
00448 }
00449 if(fH_Sil_dEdx_PvsZ[lay][mod]) fH_Sil_dEdx_PvsZ[lay][mod]->Reset();
00450 if(fH_Sil_Pos_PvsZ[lay][mod]) fH_Sil_Pos_PvsZ[lay][mod]->Reset();
00451 }
00452 }
00453
00454
00455
00456
00457
00458 if(fDet == (Int_t) E_FIN_INNER_LAYER){
00459 for(Int_t nchip = 0; nchip < (Int_t) K_N_Sil_AdcChips; nchip++)
00460 for(Int_t nside = 0; nside < (Int_t) K_N_Sil_Sides; nside++)
00461 for(Int_t nmod = 1; nmod < (Int_t) K_N_Sil_Modules+1; nmod++)
00462 SetZeroCommonMode(nchip,nside,nmod,1);
00463 } else if(fDet == (Int_t) E_FIN_OUTER_LAYER) {
00464 for(Int_t nchip = 0; nchip < (Int_t) K_N_Sil_AdcChips; nchip++)
00465 for(Int_t nside = 0; nside < (Int_t) K_N_Sil_Sides; nside++)
00466 for(Int_t nmod = 1; nmod < (Int_t) K_N_Sil_Modules+1; nmod++)
00467 SetZeroCommonMode(nchip,nside,nmod,2);
00468 }
00469 }
00470
00471
00472 void TFndSilMon::WriteToFile(TString file,Bool_t IsShared) {
00473
00474
00475
00476 if(IsShared){
00477
00478 msil->cd();
00479 }
00480 else{
00481 if(file.IsNull()) fsil->cd();
00482 else {
00483 fout = new TFile(file.Data(),"RECREATE","Sil Histogram File");
00484 fout->cd();
00485 }
00486 }
00487
00488
00489
00490 for(Int_t lay =0 ; lay <=1 ; lay ++){
00491 for(Int_t mod = 0; mod < K_N_Sil_Modules; mod++){
00492 for(Int_t sid = 0; sid < K_N_Sil_Sides; sid++){
00493 if(fH_Sil_Noise[lay][mod][sid]) fH_Sil_Noise[lay][mod][sid]->Write();
00494 if(fH_Sil_Mult[lay][mod][sid]) fH_Sil_Mult[lay][mod][sid]->Write();
00495 if(fH_Sil_ClCh[lay][mod][sid]) fH_Sil_ClCh[lay][mod][sid]->Write();
00496 if(fH_Sil_CMsigma[lay][mod][sid]) fH_Sil_CMsigma[lay][mod][sid]->Write();
00497 if(fH_Sil_CMmean[lay][mod][sid]) fH_Sil_CMmean[lay][mod][sid]->Write();
00498 if(sid<2){
00499 if(fH_Sil_CleanMult[lay][mod][sid]) fH_Sil_CleanMult[lay][mod][sid]->Write();
00500 if(fH_Sil_ClChClean[lay][mod][sid]) fH_Sil_ClChClean[lay][mod][sid]->Write();
00501 if(fH_Sil_dEdx[lay][mod][sid]) fH_Sil_dEdx[lay][mod][sid]->Write();
00502 }
00503 }
00504 if(fH_Sil_dEdx_PvsZ[lay][mod]) fH_Sil_dEdx_PvsZ[lay][mod]->Write();
00505 if(fH_Sil_Pos_PvsZ[lay][mod]) fH_Sil_Pos_PvsZ[lay][mod]->Write();
00506 }
00507 }
00508
00509 if(!file.IsNull()) fout->Close();
00510 delete fout; fout = 0;
00511
00512 }
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538