X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCMonitor.cxx;h=0fffae255172140776102cbfe3a2cc3dad03a1b7;hb=0b6ce827e45d656b0ec628bf5cb80b2cbaba5c62;hp=268e38672648598d5e838452e4a5ba5c2d1b1f34;hpb=1d32f2735ecf016a63ea0d3a7a920463a8d4f657;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCMonitor.cxx b/TPC/AliTPCMonitor.cxx index 268e3867264..0fffae25517 100755 --- a/TPC/AliTPCMonitor.cxx +++ b/TPC/AliTPCMonitor.cxx @@ -43,7 +43,7 @@ New TPC monitoring package from Stefan Kniege. The monitoring package can be sta //// e.g baseline and baseline rms are calculated and stored. //// //// Author: Stefan Kniege, IKF, Frankfurt -//// +//// Jens Wiechula, Uni Tuebingen (Jens.Wiechula@cern.ch) //// ///////////////////////////////////////////////////////////////////////// @@ -54,6 +54,8 @@ New TPC monitoring package from Stefan Kniege. The monitoring package can be sta #include "AliTPCMonitorMappingHandler.h" #include "AliTPCMonitorFFT.h" #include "AliRawReader.h" +#include "AliRawReaderDateOnline.h" +#include "AliRawReaderRoot.h" #include "AliRawEventHeaderBase.h" #include "AliAltroRawStreamV3.h" #include "TH2F.h" @@ -65,6 +67,7 @@ New TPC monitoring package from Stefan Kniege. The monitoring package can be sta #include "TROOT.h" #include "TDirectory.h" #include "TSystem.h" +#include "TString.h" #include "TPaveText.h" #include "TFile.h" #include @@ -79,7 +82,7 @@ const Int_t AliTPCMonitor::fgkHwMaskAltroChip = 0x0070; const Int_t AliTPCMonitor::fgkHwMaskRCU = 0x7000; //____________________________________________________________________________ -AliTPCMonitor::AliTPCMonitor(char* name, char* title) : +AliTPCMonitor::AliTPCMonitor(const char* name, const char* title) : AliTPCMonitorConfig(name,title), fPad(new Int_t*[GetMaxHwAddr()]), fPadMapHw(new Float_t[GetMaxHwAddr()]), @@ -149,7 +152,12 @@ fMapEqidsRcu(new Int_t[1000]), fMirror(1), fChannelIter(0), fMapHand(0), -fRawReader(0) +fRawReader(0), +fkMonTable(0x0), +fMonTableString(""), +fMonTableArray(0x0), +fMonTableChanged(kFALSE) + { // Constructor @@ -246,7 +254,11 @@ fMapEqidsRcu(new Int_t[1000]), fMirror(monitor.fMirror), fChannelIter(monitor.fChannelIter), fMapHand(monitor.fMapHand), -fRawReader(monitor.fRawReader) +fRawReader(monitor.fRawReader), +fkMonTable(0x0), +fMonTableString(""), +fMonTableArray(0x0), +fMonTableChanged(kFALSE) { // copy constructor @@ -358,7 +370,10 @@ AliTPCMonitor &AliTPCMonitor:: operator= (const AliTPCMonitor& monitor) fLdcIdOld=monitor.fLdcIdOld; fMapHand=monitor.fMapHand; fRawReader=monitor.fRawReader; - + fkMonTable=0x0; + fMonTableString=""; + fMonTableArray=0x0; + fMonTableChanged=kFALSE; fHistList = new TObjArray(); fHistIROC=(TH2F*)monitor.fHistIROC->Clone(); fHistList->Add(fHistIROC); @@ -547,14 +562,20 @@ Int_t AliTPCMonitor::ReadDataNew(Int_t secid) // Read Data File/Stream for specified Format. // Payload will be extracted from either ROOT or DATE format // and passed to FillHistsDecode for decoding of the adc information + + if (TString(GetLastProcFile())!=GetFile() || fMonTableChanged) { + delete fRawReader; + fRawReader=0x0; + } if (!fRawReader){ - fRawReader = AliRawReader::Create(GetFile()); - SetLastProcFile(GetFile()); - } else if (strcmp(GetLastProcFile(),GetFile())!=0){ - delete fRawReader; - fRawReader = AliRawReader::Create(GetFile()); -// printf("New file!!!\n"); + TString file(GetFile()); + if (file.BeginsWith("mem://")){ + file.ReplaceAll("mem://",""); + fRawReader = new AliRawReaderDateOnline(file.Data(),fkMonTable); + }else{ + fRawReader = AliRawReader::Create(GetFile()); + } SetLastProcFile(GetFile()); } @@ -567,7 +588,10 @@ Int_t AliTPCMonitor::ReadDataNew(Int_t secid) while(skip && GetProcNextEvent()) { if(fVerb) cout << "AliTPCMonitor::ReadDataNew get event " << endl; - if(!fRawReader->NextEvent()) { AliError("Could not get next Event"); return 11 ;} + if(fRawReader->IsA()==AliRawReaderRoot::Class()){ + AliInfo(Form("Root, NextEvent: %d\n",GetEventID())); + if (!fRawReader->GotoEvent(GetEventID())){AliError("Could not get next Event"); return 11 ;} + } else if(!fRawReader->NextEvent()) { AliError("Could not get next Event"); return 11 ;} // skip all events but physics, calibration and software trigger events! UInt_t eventType=fRawReader->GetType(); if ( !(eventType==AliRawEventHeaderBase::kPhysicsEvent || @@ -575,18 +599,36 @@ Int_t AliTPCMonitor::ReadDataNew(Int_t secid) eventType==AliRawEventHeaderBase::kSystemSoftwareTriggerEvent || eventType==AliRawEventHeaderBase::kDetectorSoftwareTriggerEvent) ) { if (fVerb) cout<< "Skipping event! Its neither of 'physics, calibration and software trigger event'" << endl; + if(fRawReader->IsA()==AliRawReaderRoot::Class()){ + if (fEventNumberGetNumberOfEvents()-1) ++fEventNumber; + else {AliError("No more events");return 11;} + } continue; } skip=kFALSE; //test if the TPC has data UChar_t *data=0; fRawReader->Select("TPC"); - if (!fRawReader->ReadNextData(data)) skip=kTRUE; - fEventNumber = fRawReader->GetEventIndex(); - fEventNumberOld = fRawReader->GetEventIndex(); + Int_t eventNr=fRawReader->GetEventIndex(); + if (!fRawReader->ReadNextData(data)) { + skip=kTRUE; + AliInfo(Form("%d / %d",fEventNumber,fRawReader->GetNumberOfEvents())); + if(fRawReader->IsA()==AliRawReaderRoot::Class()){ + if (fEventNumberGetNumberOfEvents()-1){ + ++eventNr; +// printf("inc conter\n"); + } + else { + AliError("No more events"); + return 11; + } + } + } + fEventNumber = eventNr; + fEventNumberOld = eventNr; } -// printf("secid: %d\n",secid); + AliInfo(Form("secid: %d",secid)); //========================== Histogram filling ====================== ResetHistos() ; @@ -612,23 +654,29 @@ Int_t AliTPCMonitor::ReadDataNew(Int_t secid) rcupatch = GetRCUPatch(fRunId, fEqId); Int_t rcupatchSector=rcupatch%6; lastrcuid = (rcupatch+1000); -// printf("RCU patch: %d, LDC: %d, EqId: %d\n",rcupatch, fLdcId, fEqId); + + Int_t currentSector=rcupatch/6; + if(fLdcIdOld!=fLdcId && fChannelIter!=0) { if(secid==-1) { FillGlobal(GetLastSector()); ResetArrays(); -// printf("filled sector: %d\n",GetLastSector()); + if (fVerb) printf("filled sector: %d\n",GetLastSector()); fChannelIter =0; } - else - { - return lastrcuid; +// else +// { +// printf("RET: filled sector: %d\n",GetLastSector()); +// return lastrcuid; // if (rcupatch/6!=secid) continue; - } +// } // fChannelIter=0; } + if (!CheckEqId(secid,fEqId)) continue; + if (fVerb) printf("Sector: %d, RCU patch: %d, LDC: %d, EqId: %d\n",currentSector,rcupatch, fLdcId, fEqId); + while ( altro->NextChannel() ){ hw=altro->GetHWAddress(); nextHwAddress = ( hw + (rcupatchSector<<12) ); @@ -808,8 +856,8 @@ void AliTPCMonitor::ResetHistos() // Reset all but for(Int_t i =0; iGetEntries(); i++) { - if(GetProcNextEvent()==0 && strcmp(((TH1*)fHistList->At(i))->GetName(),"SIDE A")==0) continue; - if(GetProcNextEvent()==0 && strcmp(((TH1*)fHistList->At(i))->GetName(),"SIDE C")==0) continue; + TString name=fHistList->At(i)->GetName(); + if(GetProcNextEvent()==0 && (name=="SIDE A" || name=="SIDE C")) continue; ((TH1*)fHistList->At(i))->Reset(); } ResetArrays(); @@ -840,24 +888,24 @@ Int_t AliTPCMonitor::CheckEqId(Int_t secid,Int_t eqid) //skip all eqids which do not belong to the TPC if ( eqid<768||eqid>983 ) return 0; // - if(fRunId<704 && 0) // commented out --> runs with runid < 704 in 2006 are not recognized anymore - { - if( (secid>-1) && (secid<36) ) // if ( secid is in range) { take only specific eqids} else { take all } - { - if( (secid==13) && ( eqid!=408 && eqid!=409 && eqid!=509 && eqid!=512 && eqid!=513 && eqid!=517 )) {passed=0;} - else if( (secid==4) && ( eqid!=404 && eqid!=504 && eqid!=407 && eqid!=503 && eqid!=508 && eqid!=506 )) {passed=0;} - } - else {if(fVerb) cout << "passed check "<< endl; } - } - else - { +// if(fRunId<704 && 0) // commented out --> runs with runid < 704 in 2006 are not recognized anymore +// { +// if( (secid>-1) && (secid<36) ) // if ( secid is in range) { take only specific eqids} else { take all } +// { +// if( (secid==13) && ( eqid!=408 && eqid!=409 && eqid!=509 && eqid!=512 && eqid!=513 && eqid!=517 )) {passed=0;} +// else if( (secid==4) && ( eqid!=404 && eqid!=504 && eqid!=407 && eqid!=503 && eqid!=508 && eqid!=506 )) {passed=0;} +// } +// else {if(fVerb) cout << "passed check "<< endl; } +// } +// else +// { if( (secid>-1) && (secid<36) ) // if ( secid is in range) { take only specific eqids} else { take all } { if(eqid!=fMapEqidsSec[secid][0] && eqid!= fMapEqidsSec[secid][1] && eqid!=fMapEqidsSec[secid][2] && eqid!=fMapEqidsSec[secid][3] && eqid!= fMapEqidsSec[secid][4] && eqid!=fMapEqidsSec[secid][5] ) {passed=0;} } else {if(fVerb) cout << "passed check "<< endl;} - } +// } return passed; } @@ -922,6 +970,7 @@ void AliTPCMonitor::FillGlobal(Int_t sector) { pad = fMapHand->GetPad( hw); row = fMapHand->GetPadRow(hw); + if (row==-1) continue; padmax = fMapHand->GetNumofPads(row); if (sector%36>17) fMirror=-1; else fMirror=1; @@ -995,20 +1044,20 @@ void AliTPCMonitor::DrawHists(Int_t histos) if(fVerb) cout << " Draw histos " << endl; - Char_t cside[10]; - if(GetLastSector()/18==0 ) sprintf(cside,"A"); - else sprintf(cside,"C"); + TString cside; + if(GetLastSector()/18==0 ) cside="A"; + else cside="C"; - Char_t titleSEC[256]; sprintf(titleSEC ,"Sector %i Side %s Run : %05i EventID %i " ,GetLastSector()%18,cside,fRunId, fEventNumber); - Char_t titleEvent[256]; sprintf(titleEvent ,"Time <-> Channles %s" ,titleSEC); - Char_t titleIROC[256]; sprintf(titleIROC ,"IROC %s" ,titleSEC); - Char_t titleOROC[256]; sprintf(titleOROC ,"OROC %s" ,titleSEC); + TString titleSEC = Form("Sector %i Side %s Run : %05i EventID %i " ,GetLastSector()%18,cside.Data(),fRunId, fEventNumber); + TString titleEvent= Form("Time <-> Channles %s" ,titleSEC.Data()); + TString titleIROC = Form("IROC %s" ,titleSEC.Data()); + TString titleOROC = Form("OROC %s" ,titleSEC.Data()); - Char_t titleMAX[256]; sprintf(titleMAX ,"Max (timebin: %i,%i) %s" ,GetRangeMaxAdcMin(),GetRangeMaxAdcMax(),titleSEC); - Char_t titleSUM[256]; sprintf(titleSUM ,"Sum (timebin: %i,%i) %s" ,GetRangeSumMin() ,GetRangeSumMax() ,titleSEC); - Char_t titleBASE[256]; sprintf(titleBASE ,"Baseline RMS<->Mean (timebin: %i-%i) %s" ,GetRangeBaseMin() ,GetRangeBaseMax() ,titleSEC); - Char_t titleMEAN[256]; sprintf(titleMEAN ,"Baseline Mean (timebin: %i-%i) %s" ,GetRangeBaseMin() ,GetRangeBaseMax() ,titleSEC); - Char_t titleRMS[256] ; sprintf(titleRMS ,"Baseline RMS (timebin: %i-%i) %s" ,GetRangeBaseMin() ,GetRangeBaseMax() ,titleSEC); + TString titleMAX = Form("Max (timebin: %i,%i) %s" ,GetRangeMaxAdcMin(),GetRangeMaxAdcMax(),titleSEC.Data()); + TString titleSUM = Form("Sum (timebin: %i,%i) %s" ,GetRangeSumMin() ,GetRangeSumMax() ,titleSEC.Data()); + TString titleBASE = Form("Baseline RMS<->Mean (timebin: %i-%i) %s" ,GetRangeBaseMin() ,GetRangeBaseMax() ,titleSEC.Data()); + TString titleMEAN = Form("Baseline Mean (timebin: %i-%i) %s" ,GetRangeBaseMin() ,GetRangeBaseMax() ,titleSEC.Data()); + TString titleRMS = Form("Baseline RMS (timebin: %i-%i) %s" ,GetRangeBaseMin() ,GetRangeBaseMax() ,titleSEC.Data()); if(histos==1) { @@ -1026,14 +1075,14 @@ void AliTPCMonitor::DrawHists(Int_t histos) fHistIROC->SetYTitle("pad"); if(GetPedestals()) fHistIROC->SetZTitle("max ADC (baseline sub)"); else fHistIROC->SetZTitle("max ADC "); - fHistIROC->SetTitle(titleIROC); + fHistIROC->SetTitle(titleIROC.Data()); fHistIROC->SetMinimum(0.01); fHistIROC->Draw("COLZ"); ciroc->UseCurrentStyle(); - fHistIROCTime->SetXTitle("row"); fHistIROCTime->SetZTitle("peak time (fit)"); fHistIROCTime->SetYTitle("pad"); fHistIROCTime->SetTitle(titleIROC); - fHistIROCRMS->SetXTitle("row"); fHistIROCRMS->SetZTitle( "baseline rms (ADC)"); fHistIROCRMS->SetYTitle("pad"); fHistIROCRMS->SetTitle(titleIROC); + fHistIROCTime->SetXTitle("row"); fHistIROCTime->SetZTitle("peak time (fit)"); fHistIROCTime->SetYTitle("pad"); fHistIROCTime->SetTitle(titleIROC.Data()); + fHistIROCRMS->SetXTitle("row"); fHistIROCRMS->SetZTitle( "baseline rms (ADC)"); fHistIROCRMS->SetYTitle("pad"); fHistIROCRMS->SetTitle(titleIROC.Data()); // OROC TCanvas* coroc = 0; @@ -1048,24 +1097,38 @@ void AliTPCMonitor::DrawHists(Int_t histos) fHistOROC->SetYTitle("pad"); if(GetPedestals()) fHistOROC->SetZTitle("max ADC (baseline sub)"); else fHistOROC->SetZTitle("max ADC "); - fHistOROC->SetTitle(titleOROC); + fHistOROC->SetTitle(titleOROC.Data()); fHistOROC->SetMinimum(0.01); fHistOROC->Draw("COLZ"); coroc->UseCurrentStyle(); - fHistOROCTime->SetXTitle("row"); fHistOROCTime->SetZTitle("peak time (fit) (timebins)"); fHistOROCTime->SetYTitle("pad"); fHistOROCTime->SetTitle(titleOROC); - fHistOROCRMS->SetXTitle("row"); fHistOROCRMS->SetZTitle("baseline rms (ADC)"); fHistOROCRMS->SetYTitle("pad"); fHistOROCRMS->SetTitle(titleOROC); + fHistOROCTime->SetXTitle("row"); fHistOROCTime->SetZTitle("peak time (fit) (timebins)"); fHistOROCTime->SetYTitle("pad"); fHistOROCTime->SetTitle(titleOROC.Data()); + fHistOROCRMS->SetXTitle("row"); fHistOROCRMS->SetZTitle("baseline rms (ADC)"); fHistOROCRMS->SetYTitle("pad"); fHistOROCRMS->SetTitle(titleOROC.Data()); + + // SUM + TString namesum=Form("ADC sum (bins: %i, %i)",GetRangeSumMin() ,GetRangeSumMax() ); + fHistIROCSUM->SetXTitle("row"); + fHistIROCSUM->SetZTitle(namesum.Data()); + fHistIROCSUM->SetYTitle("pad"); + fHistIROCSUM->SetTitle(titleIROC.Data()); + + fHistOROCSUM->SetXTitle("row"); + fHistOROCSUM->SetZTitle(namesum); + fHistOROCSUM->SetYTitle("pad"); + fHistOROCSUM->SetTitle(titleOROC.Data()); - // SUM - Char_t namesum[256] ; sprintf(namesum,"ADC sum (bins: %i, %i)",GetRangeSumMin() ,GetRangeSumMax() ); - fHistIROCSUM->SetXTitle("row"); fHistIROCSUM->SetZTitle(namesum); fHistIROCSUM->SetYTitle("pad"); fHistIROCSUM->SetTitle(titleIROC); - fHistOROCSUM->SetXTitle("row"); fHistOROCSUM->SetZTitle(namesum); fHistOROCSUM->SetYTitle("pad"); fHistOROCSUM->SetTitle(titleOROC); + // BASE + TString namebase=Form("base mean (timbebin: %i, %i )",GetRangeBaseMin(),GetRangeBaseMax()); + fHistIROCBASE->SetXTitle("row"); + fHistIROCBASE->SetZTitle(namebase.Data()); + fHistIROCBASE->SetYTitle("pad"); + fHistIROCBASE->SetTitle(titleIROC.Data()); - // BASE - Char_t namebase[256] ; sprintf(namebase ,"base mean (timbebin: %i, %i )",GetRangeBaseMin(),GetRangeBaseMax()); - fHistIROCBASE->SetXTitle("row"); fHistIROCBASE->SetZTitle(namebase); fHistIROCBASE->SetYTitle("pad"); fHistIROCBASE->SetTitle(titleIROC); - fHistOROCBASE->SetXTitle("row"); fHistOROCBASE->SetZTitle(namebase); fHistOROCBASE->SetYTitle("pad"); fHistOROCBASE->SetTitle(titleOROC); + fHistOROCBASE->SetXTitle("row"); + fHistOROCBASE->SetZTitle(namebase); + fHistOROCBASE->SetYTitle("pad"); + fHistOROCBASE->SetTitle(titleOROC.Data()); if(fHistIROCClone) fHistIROCClone->Delete(); if(fHistOROCClone) fHistOROCClone->Delete(); @@ -1075,15 +1138,13 @@ void AliTPCMonitor::DrawHists(Int_t histos) // Executables if(fExecPlaneMax==0) { - Char_t carry1[100]; - sprintf(carry1,".x %s/TPC/AliTPCMonitorExec.C(1)",gSystem->Getenv("ALICE_ROOT")); - ciroc->AddExec("pad",carry1); - coroc->AddExec("pad",carry1); + TString carry1=Form(".x %s/TPC/AliTPCMonitorExec.C(1)",gSystem->Getenv("ALICE_ROOT")); + ciroc->AddExec("pad",carry1.Data()); + coroc->AddExec("pad",carry1.Data()); - Char_t carry2[100]; - sprintf(carry2,".x %s/TPC/AliTPCMonitorExec.C(2)",gSystem->Getenv("ALICE_ROOT")); - ciroc->AddExec("row",carry2); - coroc->AddExec("row",carry2); + TString carry2=Form(".x %s/TPC/AliTPCMonitorExec.C(2)",gSystem->Getenv("ALICE_ROOT")); + ciroc->AddExec("row",carry2.Data()); + coroc->AddExec("row",carry2.Data()); fExecPlaneMax=1; } coroc->Update(); @@ -1100,7 +1161,7 @@ void AliTPCMonitor::DrawHists(Int_t histos) fHistDistrMaxIROC->GetXaxis()->SetRangeUser(0.0,1000.0); fHistDistrMaxIROC->SetXTitle("max ADC (ADC)"); fHistDistrMaxIROC->SetYTitle("counts"); - fHistDistrMaxIROC->SetTitle(titleMAX); + fHistDistrMaxIROC->SetTitle(titleMAX.Data()); fHistDistrMaxIROC->Draw(""); fHistDistrMaxOROC->SetLineColor(2); fHistDistrMaxOROC->Draw("same"); @@ -1121,7 +1182,7 @@ void AliTPCMonitor::DrawHists(Int_t histos) fHistDistrSumIROC->SetXTitle("sum ADC (ADC)"); fHistDistrSumIROC->SetYTitle("counts"); - fHistDistrSumIROC->SetTitle(titleSUM); + fHistDistrSumIROC->SetTitle(titleSUM.Data()); fHistDistrSumIROC->Draw(""); fHistDistrSumOROC->SetLineColor(2); fHistDistrSumOROC->Draw("same"); @@ -1137,7 +1198,7 @@ void AliTPCMonitor::DrawHists(Int_t histos) fHistDistrBaseMeanIROC = fHistDistrBase2dIROC->ProjectionX("fHistDistrBaseMeanIROC"); fHistDistrBaseMeanIROC->SetXTitle("base mean (ADC)"); fHistDistrBaseMeanIROC->SetYTitle("counts"); - fHistDistrBaseMeanIROC->SetTitle(titleMEAN); + fHistDistrBaseMeanIROC->SetTitle(titleMEAN.Data()); fHistDistrBaseMeanIROC->Draw(""); fHistDistrBaseMeanOROC = fHistDistrBase2dOROC->ProjectionX("fHistDistrBaseMeanOROC"); @@ -1155,7 +1216,7 @@ void AliTPCMonitor::DrawHists(Int_t histos) fHistDistrBaseRmsIROC = fHistDistrBase2dIROC->ProjectionY("fHistDistrBaseRmsIROC"); fHistDistrBaseRmsIROC->SetXTitle("base rms (ADC)"); fHistDistrBaseRmsIROC->SetYTitle("counts"); - fHistDistrBaseRmsIROC->SetTitle(titleRMS); + fHistDistrBaseRmsIROC->SetTitle(titleRMS.Data()); fHistDistrBaseRmsIROC->Draw(""); fHistDistrBaseRmsOROC = fHistDistrBase2dOROC->ProjectionY("fHistDistrBaseRmsOROC"); @@ -1180,11 +1241,11 @@ void AliTPCMonitor::DrawHists(Int_t histos) if(!(cglobC=(TCanvas*)gROOT->GetListOfCanvases()->FindObject("SIDE C all"))) cglobC = CreateCanvas("SIDE C all"); if(!(cglobA=(TCanvas*)gROOT->GetListOfCanvases()->FindObject("SIDE A all"))) cglobA = CreateCanvas("SIDE A all"); - Char_t globtitle1[256]; sprintf(globtitle1,"SIDE A Run %05i (EventID %i)",fRunId,fEventNumber); - Char_t globtitle2[256]; sprintf(globtitle2,"SIDE C Run %05i (EventID %i)",fRunId,fEventNumber); + TString globtitle1=Form("SIDE A Run %05i (EventID %i)",fRunId,fEventNumber); + TString globtitle2=Form("SIDE C Run %05i (EventID %i)",fRunId,fEventNumber); - fHistGlobalMaxA->SetTitle(globtitle1); - fHistGlobalMaxC->SetTitle(globtitle2); + fHistGlobalMaxA->SetTitle(globtitle1.Data()); + fHistGlobalMaxC->SetTitle(globtitle2.Data()); fHistGlobalMaxA->SetXTitle("x/mm"); fHistGlobalMaxA->SetYTitle("y/mm"); fHistGlobalMaxC->SetXTitle("x/mm"); @@ -1199,14 +1260,13 @@ void AliTPCMonitor::DrawHists(Int_t histos) cglobC->cd() ; fHistGlobalMaxC->Draw("COLZ"); cglobA->cd() ; fHistGlobalMaxA->Draw("COLZ"); - Char_t nameom[256]; - sprintf(nameom,".x %s/TPC/AliTPCMonitorExec.C(3)",gSystem->Getenv("ALICE_ROOT")); + TString nameom=Form(".x %s/TPC/AliTPCMonitorExec.C(3)",gSystem->Getenv("ALICE_ROOT")); if(fExecGlob==0) { - if(fVerb)cout << " set exec " << nameom << endl; - cglobC->AddExec("glob",nameom); - cglobA->AddExec("glob",nameom); + if(fVerb)cout << " set exec " << nameom.Data() << endl; + cglobC->AddExec("glob",nameom.Data()); + cglobA->AddExec("glob",nameom.Data()); fExecGlob = 1; } else @@ -1214,9 +1274,9 @@ void AliTPCMonitor::DrawHists(Int_t histos) cglobC->DeleteExec("glob"); cglobA->DeleteExec("glob"); - if(fVerb) cout << " set exec " << nameom << endl; - cglobC->AddExec("glob",nameom); - cglobA->AddExec("glob",nameom); + if(fVerb) cout << " set exec " << nameom.Data() << endl; + cglobC->AddExec("glob",nameom.Data()); + cglobA->AddExec("glob",nameom.Data()); } cglobC->Update(); @@ -1242,20 +1302,20 @@ void AliTPCMonitor::DrawRMSMap() crmsiroc->cd(); fHistIROCRMS->Draw("COLZ"); crmsoroc->cd(); fHistOROCRMS->Draw("COLZ"); - Char_t carry1[100]; sprintf(carry1,".x %s/TPC/AliTPCMonitorExec.C(1)",gSystem->Getenv("ALICE_ROOT")); - Char_t carry2[100]; sprintf(carry2,".x %s/TPC/AliTPCMonitorExec.C(2)",gSystem->Getenv("ALICE_ROOT")); + TString carry1=Form(".x %s/TPC/AliTPCMonitorExec.C(1)",gSystem->Getenv("ALICE_ROOT")); + TString carry2=Form(".x %s/TPC/AliTPCMonitorExec.C(2)",gSystem->Getenv("ALICE_ROOT")); if(fExecPadIrocRms==0) { - crmsiroc->AddExec("pad",carry1); - crmsiroc->AddExec("row",carry2); + crmsiroc->AddExec("pad",carry1.Data()); + crmsiroc->AddExec("row",carry2.Data()); fExecPadIrocRms=1; } if(fExecPadOrocRms==0) { - crmsoroc->AddExec("pad",carry1); - crmsoroc->AddExec("row",carry2); + crmsoroc->AddExec("pad",carry1.Data()); + crmsoroc->AddExec("row",carry2.Data()); fExecPadOrocRms=1; } @@ -1293,9 +1353,9 @@ void AliTPCMonitor::ExecPad() TCanvas* cpad = 0; // Char_t namehist[50]; - Char_t projhist[60]; - Char_t namesel[256]; - Char_t namecanv[256]; + TString projhist; + TString namesel; + TString namecanv; Int_t xbinmin = 0; Int_t xbinmax = 0; @@ -1304,21 +1364,21 @@ void AliTPCMonitor::ExecPad() Int_t rocid = 0; // Check wich Canvas executed the event TH2S* fHistIndex=0; - sprintf(namesel,select->GetName()); - if(strcmp(namesel,"fHistOROC")==0 || strcmp(namesel,"fHistOROCRMS")==0 || strcmp(namesel,"fHistOROCTime")==0 ) + namesel=select->GetName(); + if(namesel=="fHistOROC" || namesel=="fHistOROCRMS" || namesel=="fHistOROCTime" ) { rocid = 1; fPadUsedRoc =1; - sprintf(projhist,"ProjectionOROC"); - sprintf(namecanv,"coroc_ch"); + projhist=Form("ProjectionOROC"); + namecanv=Form("coroc_ch"); fHistIndex = fHistOROCIndex; } - if(strcmp(namesel,"fHistIROC")==0 || strcmp(namesel,"fHistIROCRMS")==0 || strcmp(namesel,"fHistIROCTime")==0 ) + if(namesel=="fHistIROC" || namesel=="fHistIROCRMS" || namesel=="fHistIROCTime" ) { rocid = 0; fPadUsedRoc=0; - sprintf(projhist,"ProjectionIROC"); - sprintf(namecanv,"ciroc_ch"); + projhist=Form("ProjectionIROC"); + namecanv=Form("ciroc_ch"); fHistIndex = fHistIROCIndex; } @@ -1343,6 +1403,7 @@ void AliTPCMonitor::ExecPad() } // Get Bin + if (!fHistIndex) return; Int_t testy = fHistIndex->GetYaxis()->FindBin(y); Int_t testx = fHistIndex->GetXaxis()->FindBin(x); Int_t binchannel = (Int_t)fHistIndex->GetCellContent(testx,testy); @@ -1362,7 +1423,6 @@ void AliTPCMonitor::ExecPad() // return; // Make title and Pave for channel Info - Char_t title[256]; Int_t npadRow , npad , nhw , nmax , hwadd; hwadd = (Int_t)fHistChannelTime->GetCellContent(binchannel,0); @@ -1390,27 +1450,20 @@ void AliTPCMonitor::ExecPad() Short_t fecget = (hwadd & fgkHwMaskFEC) >> 7; Short_t branchget = (hwadd & fgkHwMaskBranch)>> 11; + legstat->AddText(Form("Branch (map) \t %i (%i) \n",branchget,branch)); + legstat->AddText(Form("Fec in patch \t %i \n",fecloc)); + legstat->AddText(Form("Fec in branch (map)\t %i (%i)\n",fecget,feclocbran)); + legstat->AddText(Form("Connector \t %i \n",connector)); + legstat->AddText(Form("Fec No. \t %i \n",fecnr)); + legstat->AddText(Form("Fec chan \t %i \n",fecch)); + legstat->AddText(Form("Altro chip\t %i \n",altrochip)); + legstat->AddText(Form("Altro chan\t %i \n",altrochannel)); - Char_t nstat1[100]; Char_t nstat2[100]; Char_t nstat3[100]; Char_t nstat4[100]; - Char_t nstat5[100]; Char_t nstat6[100]; Char_t nstat7[100]; Char_t nstat8[100]; - - sprintf(nstat1,"Branch (map) \t %i (%i) \n",branchget,branch); - sprintf(nstat2,"Fec in patch \t %i \n",fecloc); - sprintf(nstat8,"Fec in branch (map)\t %i (%i)\n",fecget,feclocbran); - sprintf(nstat7,"Connector \t %i \n",connector); - sprintf(nstat3,"Fec No. \t %i \n",fecnr); - sprintf(nstat4,"Fec chan \t %i \n",fecch); - sprintf(nstat5,"Altro chip\t %i \n",altrochip); - sprintf(nstat6,"Altro chan\t %i \n",altrochannel); - - legstat->AddText(nstat1); legstat->AddText(nstat2); legstat->AddText(nstat8); legstat->AddText(nstat7); - legstat->AddText(nstat3); legstat->AddText(nstat4); legstat->AddText(nstat5); legstat->AddText(nstat6); - - sprintf(title,"Row=%d Pad=%d Hw =%d maxADC =%d count =%d",npadRow,npad,nhw,nmax,binchannel); + TString title=Form("Row=%d Pad=%d Hw =%d maxADC =%d count =%d",npadRow,npad,nhw,nmax,binchannel); // hp->SetName(projhist); hp->SetTitleSize(0.04); - hp->SetTitle(title); + hp->SetTitle(title.Data()); hp->SetYTitle("ADC"); hp->SetXTitle("Timebin"); hp->GetXaxis()->SetTitleColor(1); @@ -1483,15 +1536,10 @@ void AliTPCMonitor::ExecRow() if(!select->InheritsFrom("TH2")) { return; } Int_t rocid = 0; - // Char_t namehist[50]; - Char_t rowhist[60]; - Char_t rowhistsum[60]; - Char_t rowhistmax[60]; - Char_t rowhistxmax[60]; - sprintf(rowhist, "hrowtime"); - sprintf(rowhistxmax ,"hxmax"); - sprintf(rowhistmax , "hrowmax"); + const Char_t *rowhist="hrowtime"; + const Char_t *rowhistxmax="hxmax"; + const Char_t *rowhistmax="hrowmax"; // get position Int_t px = gPad->GetEventX(); @@ -1528,10 +1576,10 @@ void AliTPCMonitor::ExecRow() Int_t setrange = 0; - - if( strcmp(select->GetName(),"fHistIROC")==0 || strcmp(select->GetName(),"fHistIROCRMS")==0 ) { fHistIndex = fHistIROCIndex; rocid =1; } - else if(strcmp(select->GetName(),"fHistOROC")==0 || strcmp(select->GetName(),"fHistOROCRMS")==0 ) { fHistIndex = fHistOROCIndex; rocid =2; } - else { cout << " not implemented for this histo " << endl; return; } + TString name=select->GetName(); + if( name=="fHistIROC" || name=="fHistIROCRMS" ) { fHistIndex = fHistIROCIndex; rocid =1; } + else if(name=="fHistOROC" || name=="fHistOROCRMS" ) { fHistIndex = fHistOROCIndex; rocid =2; } + else { cout << " not implemented for this histo " << endl; return; } gPad->GetCanvas()->FeedbackMode(kTRUE); @@ -1570,7 +1618,6 @@ void AliTPCMonitor::ExecRow() delete gROOT->Get(rowhist); delete gROOT->Get(rowhistmax); - delete gROOT->Get(rowhistsum); delete gROOT->Get("hxmax"); delete gROOT->Get("legrow"); } @@ -1630,8 +1677,7 @@ void AliTPCMonitor::ExecRow() } cxmax->cd(); - Char_t hxtitle[50] ; sprintf(hxtitle,"max adc in pads at x=%5.1f mm",xval); - hxmax->SetTitle(hxtitle); + hxmax->SetTitle(Form("max adc in pads at x=%5.1f mm",xval)); hxmax->SetXTitle("row"); if(!GetPedestals()) hxmax->SetYTitle("max adc (baseline sub.)"); else hxmax->SetYTitle("max adc "); @@ -1648,17 +1694,23 @@ void AliTPCMonitor::ExecRow() cxmax->Update(); crowtime->cd(); - Char_t title[256]; - Char_t titlemax[256]; - if(rocid==1) {sprintf(title,"%s Row=%d",((TH2*)select)->GetTitle(),row) ; sprintf(titlemax,"IROC max/sum Row=%d",row );} - else {sprintf(title,"%s Row=%d",((TH2*)select)->GetTitle(),row-63); sprintf(titlemax,"OROC max/sum Row=%d",row-63);} + TString title; + TString titlemax; + if(rocid==1) { + title.Form("%s Row=%d",((TH2*)select)->GetTitle(),row) ; + titlemax.Form("IROC max/sum Row=%d",row ); + } else { + title.Form("%s Row=%d",((TH2*)select)->GetTitle(),row-63); + titlemax.Form("OROC max/sum Row=%d",row-63); + } + if(fVerb) cout << " set name " << endl; // row vs time crowtime->cd(); hrowtime->SetTitleSize(0.04); - hrowtime->SetTitle(title); + hrowtime->SetTitle(title.Data()); hrowtime->SetYTitle("timbin"); hrowtime->SetXTitle("pad in row"); hrowtime->SetZTitle("signal (ADC)"); @@ -1687,7 +1739,7 @@ void AliTPCMonitor::ExecRow() hrowmax->SetMaximum(profrowymax); } hrowmax->SetTitleSize(0.04); - hrowmax->SetTitle(title); + hrowmax->SetTitle(title.Data()); hrowmax->SetYTitle("max adc"); hrowmax->SetXTitle("pad in row"); hrowmax->GetXaxis()->SetTitleColor(1); @@ -1711,26 +1763,26 @@ void AliTPCMonitor::Write10bitChannel() Int_t row = (Int_t)fMapHand->GetPadRow(fPadUsedHwAddr); Int_t channel = (Int_t)fPadMapHw[fPadUsedHwAddr]; - Char_t filenameroot[256]; - Char_t filenamedat[256]; - Char_t projhist[256]; + TString filenameroot; + TString filenamedat; + TString projhist; - if(fPadUsedRoc==1) { sprintf(projhist,"ProjectionOROC"); } - if(fPadUsedRoc==0) { sprintf(projhist,"ProjectionIROC"); } + if(fPadUsedRoc==1) { projhist.Form("ProjectionOROC"); } + if(fPadUsedRoc==0) { projhist.Form("ProjectionIROC"); } - sprintf(filenamedat, "Channel_Run%05i_EventID_%i_Pad_%i_Row_%i.dat" ,fRunId,fEventNumber,pad,row); - sprintf(filenameroot,"Channel_Run%05i_EventID_%i_Pad_%i_Row_%i.root" ,fRunId,fEventNumber,pad,row); + filenamedat.Form("Channel_Run%05i_EventID_%i_Pad_%i_Row_%i.dat" ,fRunId,fEventNumber,pad,row); + filenameroot.Form("Channel_Run%05i_EventID_%i_Pad_%i_Row_%i.root" ,fRunId,fEventNumber,pad,row); TH1D* hpr = 0; if((hpr=(TH1D*)gROOT->Get(projhist))) { // root histo - TFile f(filenameroot,"recreate"); + TFile f(filenameroot.Data(),"recreate"); hpr->Write(); f.Close(); // raw singal - ofstream datout(filenamedat,ios::out); + ofstream datout(filenamedat.Data(),ios::out); datout <<"Timebin \t ADC value " << endl; for(Int_t i = 1; i Get(projhist)==0){AliWarning("Proj histo does not exist \n Move mouse over 2d histo choose channel \n and drag mouse form histo again!"); return ;} - else hproj = (TH1D*)gROOT->Get(projhist) ; + else hproj = (TH1D*)gROOT->Get(projhist.Data()) ; - if(fPadUsedRoc==1) { sprintf(namehtrimag,"htransimagfreq_oroc"); sprintf(namehtrreal,"htransrealfreq_oroc"); sprintf(namehtrmag,"htransmagfreq_oroc"); } - else { sprintf(namehtrimag,"htransimagfreq_iroc"); sprintf(namehtrreal,"htransrealfreq_iroc"); sprintf(namehtrmag,"htransmagfreq_iroc"); } + if(fPadUsedRoc==1) { namehtrimag="htransimagfreq_oroc"; namehtrreal="htransrealfreq_oroc"; namehtrmag="htransmagfreq_oroc"; } + else { namehtrimag="htransimagfreq_iroc"; namehtrreal="htransrealfreq_iroc"; namehtrmag="htransmagfreq_iroc"; } - if( gROOT->Get(namehtrimag)) delete gROOT->Get(namehtrimag); - if( gROOT->Get(namehtrreal)) delete gROOT->Get(namehtrreal); - if( gROOT->Get(namehtrmag)) delete gROOT->Get(namehtrmag); + if( gROOT->Get(namehtrimag.Data())) delete gROOT->Get(namehtrimag.Data()); + if( gROOT->Get(namehtrreal.Data())) delete gROOT->Get(namehtrreal.Data()); + if( gROOT->Get(namehtrmag.Data())) delete gROOT->Get(namehtrmag.Data()); TCanvas *ctrans = 0; - if(!(ctrans = (TCanvas*)gROOT->GetListOfCanvases()->FindObject(namecanv))) + if(!(ctrans = (TCanvas*)gROOT->GetListOfCanvases()->FindObject(namecanv.Data()))) { - ctrans = CreateCanvas(namecanv); + ctrans = CreateCanvas(namecanv.Data()); ctrans->Divide(1,2); } TCanvas *ctrans2 = 0; - if(!(ctrans2 = (TCanvas*)gROOT->GetListOfCanvases()->FindObject(namecanv2))) + if(!(ctrans2 = (TCanvas*)gROOT->GetListOfCanvases()->FindObject(namecanv2.Data()))) { - ctrans2 = CreateCanvas(namecanv2); + ctrans2 = CreateCanvas(namecanv2.Data()); // ctrans2->Divide(1,2); } @@ -1805,19 +1857,19 @@ void AliTPCMonitor::ExecTransform() Double_t deltat = 1.0/(Float_t)GetSamplingFrequency(); // output histo - TH1D* htransrealfreq = new TH1D(namehtrreal,namehtrreal,10000,-1/(2*deltat),1/(2*deltat)); - TH1D* htransimagfreq = new TH1D(namehtrimag,namehtrimag,10000,-1/(2*deltat),1/(2*deltat)); - TH1D* htransmag = new TH1D(namehtrmag,namehtrmag,10000,-1/(2*deltat),1/(2*deltat)); + TH1D* htransrealfreq = new TH1D(namehtrreal.Data(),namehtrreal.Data(),10000,-1/(2*deltat),1/(2*deltat)); + TH1D* htransimagfreq = new TH1D(namehtrimag.Data(),namehtrimag.Data(),10000,-1/(2*deltat),1/(2*deltat)); + TH1D* htransmag = new TH1D(namehtrmag.Data(),namehtrmag.Data(),10000,-1/(2*deltat),1/(2*deltat)); - Char_t titlereal[256]; - Char_t titleimag[256]; - Char_t titlemag[256]; - if(fPadUsedRoc==1) { sprintf(titlereal,"OROC DFT real part"); sprintf(titleimag,"OROC DFT imag part"); sprintf(titlemag,"OROC DFT magnitude"); } - else { sprintf(titlereal,"IROC DFT real part"); sprintf(titleimag,"IROC DFT imag part"); sprintf(titlemag,"IROC DFT magnitude"); } + TString titlereal; + TString titleimag; + TString titlemag; + if(fPadUsedRoc==1) { titlereal="OROC DFT real part"; titleimag="OROC DFT imag part"; titlemag="OROC DFT magnitude"; } + else { titlereal="IROC DFT real part"; titleimag="IROC DFT imag part"; titlemag="IROC DFT magnitude"; } - htransrealfreq->SetTitle(titlereal); htransrealfreq->SetXTitle("f/hz"); htransrealfreq->SetYTitle("z_{real}(f)"); - htransimagfreq->SetTitle(titleimag); htransimagfreq->SetXTitle("f/hz"); htransimagfreq->SetYTitle("z_{imag}(f)"); - htransmag->SetTitle(titlemag); htransmag->SetXTitle("f/hz"); htransmag->SetYTitle("mag(f)"); + htransrealfreq->SetTitle(titlereal.Data()); htransrealfreq->SetXTitle("f/hz"); htransrealfreq->SetYTitle("z_{real}(f)"); + htransimagfreq->SetTitle(titleimag.Data()); htransimagfreq->SetXTitle("f/hz"); htransimagfreq->SetYTitle("z_{imag}(f)"); + htransmag->SetTitle(titlemag.Data()); htransmag->SetXTitle("f/hz"); htransmag->SetYTitle("mag(f)"); // create complex packed data array const Int_t kdatasiz = 2*bins; @@ -1852,11 +1904,11 @@ void AliTPCMonitor::ExecTransform() htransmag->Draw(); ctrans2->Update(); delete four; - delete data; + delete [] data; } //__________________________________________________________________ -void AliTPCMonitor::ShowSel(Int_t* compval) +void AliTPCMonitor::ShowSel(const Int_t* compval) { // Show only selected components @@ -1869,7 +1921,7 @@ void AliTPCMonitor::ShowSel(Int_t* compval) Int_t feclocbran = 0; Int_t branch = 0; Short_t rcuget = 0; - Int_t emptyI = 1; + // Int_t emptyI = 1; Int_t index = -1; Int_t hwadd = 0; @@ -1939,7 +1991,7 @@ void AliTPCMonitor::ShowSel(Int_t* compval) // Altro chip altrochip = fMapHand->GetAltro(hwadd); if(compval[5]!=-1 && altrochip!=compval[5]) { fHist->SetCellContent(row-subrows+1,pad+1,0); continue; } - emptyI =0; + // emptyI =0; } } @@ -1971,10 +2023,8 @@ void AliTPCMonitor::ResizeCanv() { // Resize canvases and delete some of them - Char_t carry1[100]; - sprintf(carry1,".x %s/TPC/AliTPCMonitorExec.C(1)",gSystem->Getenv("ALICE_ROOT")); - Char_t carry3[100]; - sprintf(carry3,".x %s/TPC/AliTPCMonitorExec.C(2)",gSystem->Getenv("ALICE_ROOT")); + TString carry1=Form(".x %s/TPC/AliTPCMonitorExec.C(1)",gSystem->Getenv("ALICE_ROOT")); + TString carry3=Form(".x %s/TPC/AliTPCMonitorExec.C(2)",gSystem->Getenv("ALICE_ROOT")); if(fVerb) cout << " canv 1 " << endl; if(gROOT->GetListOfCanvases()->FindObject( "coroc_ch")) { delete gROOT->GetListOfCanvases()->FindObject("coroc_ch") ; } @@ -1987,8 +2037,8 @@ void AliTPCMonitor::ResizeCanv() TCanvas* ciroc = CreateCanvas("ciroc"); ciroc->cd(); fHistIROC->Draw("COLZ"); - ciroc->AddExec("pad",carry1); - ciroc->AddExec("row",carry3); + ciroc->AddExec("pad",carry1.Data()); + ciroc->AddExec("row",carry3.Data()); fExecPlaneMax=1; ciroc->Update(); } @@ -2000,8 +2050,8 @@ void AliTPCMonitor::ResizeCanv() coroc->cd(); fHistOROC->Draw("COLZ"); - coroc->AddExec("pad",carry1); - coroc->AddExec("row",carry3); + coroc->AddExec("pad",carry1.Data()); + coroc->AddExec("row",carry3.Data()); coroc->Update(); fExecPlaneMax=1; } @@ -2041,9 +2091,10 @@ Int_t AliTPCMonitor::ExecProcess() TObject *select = gPad->GetSelected(); if(!select) return -1; + TString name=select->GetName(); if(!select->InheritsFrom("TH2")) {gPad->SetUniqueID(0); return -1; } - if( strcmp(select->GetName(),"hglobal" )==0 || ( strcmp(select->GetName(),"SIDE A" )==0) ) side = 0; - else if( strcmp(select->GetName(),"hglobal2")==0 || ( strcmp(select->GetName(),"SIDE C" )==0) ) side = 1; + if( name=="hglobal" || name=="SIDE A" ) side = 0; + else if( name=="hglobal2" || name=="SIDE C" ) side = 1; // get position Int_t px = gPad->GetEventX(); @@ -2092,10 +2143,10 @@ Int_t AliTPCMonitor::GetRCUPatch(Int_t runid, Int_t eqid) const // Return RCU patch index for given equipment id eqid Int_t patch = 0; //if(runid>=704) - if ( eqid<768 || eqid>983 ) return 0; //no TPC eqid if(runid>=0) { - if(eqid>=1000) return 0; + if ( eqid<768 || eqid>983 ) return 0; //no TPC eqid +// if(eqid>=1000) return 0; patch = fMapEqidsRcu[eqid] ; } else @@ -2132,7 +2183,7 @@ void AliTPCMonitor::DumpHeader(AliRawReader * reader) const //__________________________________________________________________ -Double_t AliTPCMonitor::Gamma4(Double_t* x, Double_t* par) { +Double_t AliTPCMonitor::Gamma4(const Double_t* x, const Double_t* par) { // Gamma4 function used to fit signals // Defined in sections: diverging branch set to 0 @@ -2157,33 +2208,34 @@ TCanvas* AliTPCMonitor::CreateCanvas(const Char_t* name) Int_t ysize = GetCanvasYSize(); Int_t xspace = GetCanvasXSpace(); Int_t yspace = GetCanvasYSpace(); - + + TString sname=name; // ROC 2dim max distribution - if( strcmp(name,"coroc" )==0) { canv = new TCanvas("coroc" ,"coroc" , -1+xoffset,(Int_t)(yspace+0.5*ysize) ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } - else if(strcmp(name,"ciroc" )==0) { canv = new TCanvas("ciroc" ,"ciroc" , -1+xoffset, 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + if( sname=="coroc") { canv = new TCanvas("coroc" ,"coroc" , -1+xoffset,(Int_t)(yspace+0.5*ysize) ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="ciroc") { canv = new TCanvas("ciroc" ,"ciroc" , -1+xoffset, 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } // ROC 2dim rms distribution - else if(strcmp(name,"crmsoroc" )==0) { canv = new TCanvas("crmsoroc" ,"crmsoroc" , -1+xoffset,(Int_t)(yspace+0.5*ysize) ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } - else if(strcmp(name,"crmsiroc" )==0) { canv = new TCanvas("crmsiroc" ,"crmsiroc" , -1+xoffset, 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="crmsoroc") { canv = new TCanvas("crmsoroc" ,"crmsoroc" , -1+xoffset,(Int_t)(yspace+0.5*ysize) ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="crmsiroc") { canv = new TCanvas("crmsiroc" ,"crmsiroc" , -1+xoffset, 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } // Global ADC max Histos - else if(strcmp(name,"SIDE C all" )==0) { canv = new TCanvas("SIDE C all" ,"SIDE C all" , (Int_t)(3*xspace+ xoffset),(Int_t)(yspace+0.5*ysize) ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } - else if(strcmp(name,"SIDE A all" )==0) { canv = new TCanvas("SIDE A all" ,"SIDE A all" , (Int_t)(3*xspace+ xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="SIDE C all") { canv = new TCanvas("SIDE C all" ,"SIDE C all" , (Int_t)(3*xspace+ xoffset),(Int_t)(yspace+0.5*ysize) ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="SIDE A all") { canv = new TCanvas("SIDE A all" ,"SIDE A all" , (Int_t)(3*xspace+ xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } // 1 dim max sum basekine distribution - else if(strcmp(name,"cmax" )==0) { canv = new TCanvas("cmax" ,"cmax" , -1+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } - else if(strcmp(name,"csum" )==0) { canv = new TCanvas("csum" ,"csum" , xspace+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } - else if(strcmp(name,"cbasemean" )==0) { canv = new TCanvas("cbasemean" ,"cbasemean" , 2*xspace+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } - else if(strcmp(name,"cbaserms" )==0) { canv = new TCanvas("cbaserms" ,"cbaserms" , 3*xspace+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } + else if(sname=="cmax") { canv = new TCanvas("cmax" ,"cmax" , -1+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } + else if(sname=="csum") { canv = new TCanvas("csum" ,"csum" , xspace+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } + else if(sname=="cbasemean") { canv = new TCanvas("cbasemean" ,"cbasemean" , 2*xspace+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } + else if(sname=="cbaserms") { canv = new TCanvas("cbaserms" ,"cbaserms" , 3*xspace+xoffset, 3*yspace ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } // Projections of single channel - else if(strcmp(name,"coroc_ch" )==0) { canv = new TCanvas("coroc_ch" ,"coroc_ch" , (Int_t)(1.5*xspace+xoffset),(Int_t)(yspace+0.5*ysize),(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } - else if(strcmp(name,"ciroc_ch" )==0) { canv = new TCanvas("ciroc_ch" ,"ciroc_ch" , (Int_t)(1.5*xspace+xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="coroc_ch") { canv = new TCanvas("coroc_ch" ,"coroc_ch" , (Int_t)(1.5*xspace+xoffset),(Int_t)(yspace+0.5*ysize),(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="ciroc_ch") { canv = new TCanvas("ciroc_ch" ,"ciroc_ch" , (Int_t)(1.5*xspace+xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } // FFT for single channel - else if(strcmp(name,"coroc_ch_trans")==0) { canv = new TCanvas("coroc_ch_trans","coroc_ch_trans",(Int_t)(3.0*xspace+xoffset),(Int_t)(yspace+0.5*ysize),(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } - else if(strcmp(name,"ciroc_ch_trans")==0) { canv = new TCanvas("ciroc_ch_trans","ciroc_ch_trans",(Int_t)(3.0*xspace+xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } - else if(strcmp(name,"coroc_ch_trans2")==0) { canv = new TCanvas("coroc_ch_trans2","coroc_ch_trans2",(Int_t)(3.0*xspace+xoffset),(Int_t)(yspace+0.5*ysize),(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } - else if(strcmp(name,"ciroc_ch_trans2")==0) { canv = new TCanvas("ciroc_ch_trans2","ciroc_ch_trans2",(Int_t)(3.0*xspace+xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="coroc_ch_trans") { canv = new TCanvas("coroc_ch_trans","coroc_ch_trans",(Int_t)(3.0*xspace+xoffset),(Int_t)(yspace+0.5*ysize),(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="ciroc_ch_trans") { canv = new TCanvas("ciroc_ch_trans","ciroc_ch_trans",(Int_t)(3.0*xspace+xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="coroc_ch_trans2") { canv = new TCanvas("coroc_ch_trans2","coroc_ch_trans2",(Int_t)(3.0*xspace+xoffset),(Int_t)(yspace+0.5*ysize),(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } + else if(sname=="ciroc_ch_trans2") { canv = new TCanvas("ciroc_ch_trans2","ciroc_ch_trans2",(Int_t)(3.0*xspace+xoffset), 0 ,(Int_t)(1.5*xsize),(Int_t)(1.5*ysize)); return canv; } // row profile histograms - else if(strcmp(name,"crowtime" )==0) { canv = new TCanvas("crowtime" ,"crowtime" , 1*xspace+xoffset, 2*yspace +ysize ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } - else if(strcmp(name,"crowmax" )==0) { canv = new TCanvas("crowmax" ,"crowmax" , 2*xspace+xoffset, 2*yspace +ysize ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } - else if(strcmp(name,"cxmax" )==0) { canv = new TCanvas("cxmax" ,"cxmax" , 3*xspace+xoffset, 2*yspace +ysize ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } + else if(sname=="crowtime") { canv = new TCanvas("crowtime" ,"crowtime" , 1*xspace+xoffset, 2*yspace +ysize ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } + else if(sname=="crowmax") { canv = new TCanvas("crowmax" ,"crowmax" , 2*xspace+xoffset, 2*yspace +ysize ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } + else if(sname=="cxmax") { canv = new TCanvas("cxmax" ,"cxmax" , 3*xspace+xoffset, 2*yspace +ysize ,(Int_t)(1.0*xsize),(Int_t)(1.0*ysize)); return canv; } else { cout << " Warning Canvas name unknown " << endl; return 0 ; } } @@ -2196,9 +2248,8 @@ void AliTPCMonitor::WriteHistos() if(GetEventProcessed()) { AliInfo("Write histos to file"); - Char_t name[256]; - sprintf(name,"SIDE_%i_SECTOR_%02i_RUN_%05i_EventID_%06i.root",(GetLastSector()/18),(GetLastSector()%18),fRunId,fEventNumber); - TFile* f = new TFile(name,"recreate"); + TString name=Form("SIDE_%i_SECTOR_%02i_RUN_%05i_EventID_%06i.root",(GetLastSector()/18),(GetLastSector()%18),fRunId,fEventNumber); + TFile* f = new TFile(name.Data(),"recreate"); for(Int_t i =0; iGetEntries(); i++) { if(((TH1*)fHistList->At(i))!=0) @@ -2234,3 +2285,41 @@ TH1* AliTPCMonitor::GetHisto(char* histname) } return hist ; } + +//_________________________________ +void AliTPCMonitor::SetupMonitoringTable(const char* table) +{ + // + // Setup the monitoring table + // + fMonTableChanged=kFALSE; + TString newTable(table); + + //check if we have a new table + if (newTable==fMonTableString) return; + fMonTableString=newTable; + + //delete old data + delete fkMonTable; + delete fMonTableArray; + fkMonTable=0x0; + + //parse table request + fMonTableArray=fMonTableString.Tokenize(",;"); + fMonTableArray->SetOwner(); + + //consistency check + Int_t entries=fMonTableArray->GetEntries(); + if (entries%4){ + AliError(Form("Monitoring table has to be given in muliples of 4\nEntries need to be sparated by ',' or ';'\nCannot parse the current table request: %s",fMonTableString.Data())); + delete fMonTableArray; + fMonTableArray=0x0; + return; + } + + fkMonTable=new const Char_t*[entries+1]; + for (Int_t i=0;iAt(i)->GetName(); + fkMonTable[entries]=0x0; + + fMonTableChanged=kTRUE; +}