47 #include "TMultiGraph.h" 48 #include "TObjArray.h" 49 #include "TObjString.h" 51 #include "Riostream.h" 80 fOCDBObjectPath =
"MUON/Calib/HV";
126 for ( std::vector<int>::size_type i = 0; i <
fRunList.size(); ++i )
145 std::ifstream in(logfile);
146 int run(-1),a,
b,c,d,e,
f,g,h,z,other;
147 std::map<int,std::string> results;
150 const char* testProblem =
"I-AliMUONCDB::CheckHV::CheckHV: Problem at ";
152 while ( in.getline(line,1023,
'\n') )
155 if (sline.Contains(
"SUMMARY"))
159 sscanf(line,
"I-AliMUONCDB::CheckHV::CheckHV: RUN %09d HVchannel SUMMARY : # of cases A(%3d) B(%3d) C(%3d) D(%3d) E(%3d) F(%3d) G(%3d) H(%3d) Z(%3d) OTHER(%3d)",
160 &r,&a,&b,&c,&d,&e,&f,&g,&h,&z,&other);
172 results.insert(std::make_pair(run,message));
179 else if ( sline.Contains(testProblem) )
182 message += sline(strlen(testProblem),sline.Length()-1).Data();
186 results.insert(std::make_pair(run,message));
188 TH2* hvoff =
new TH2I(outputBaseName,outputBaseName,1,0,1,1,0,1);
190 std::map<int,std::string>::const_iterator it;
192 for ( it = results.begin(); it != results.end(); ++it )
194 AliInfo(Form(
"%d -> %s",it->first,it->second.c_str()));
198 while ( ( str = static_cast<TObjString*>(next()) ) )
200 TString s(str->String());
202 TString alias = (
static_cast<TObjString*
>(parts->At(0)))->String();
204 channel += Form(
"(%4d)",
DCSNamer()->DetElemIdFromDCSAlias(alias.Data()));
205 channel.ReplaceAll(
".actual.vMon",
"");
206 hvoff->Fill(Form(
"%6d",it->first),channel.Data(),1.0);
212 hvoff->LabelsDeflate(
"x");
213 hvoff->LabelsDeflate(
"y");
214 hvoff->LabelsOption(
"x",
"<");
215 hvoff->LabelsOption(
"y",
"<");
217 TCanvas* c1 =
new TCanvas;
218 c1->SetLeftMargin(0.35);
220 c1->Print(Form(
"%s.pdf",outputBaseName));
221 TCanvas* c2 =
new TCanvas;
222 TH1* hx = hvoff->ProjectionX(
"hvoffperrun");
224 c2->Print(Form(
"%s-perrun.pdf",outputBaseName));
225 TCanvas* c3 =
new TCanvas;
226 c3->SetBottomMargin(0.55);
227 TH1* perchannel = hvoff->ProjectionY(
"hvoffperchannel");
228 perchannel->GetXaxis()->SetBit(TAxis::kLabelsVert);
229 perchannel->GetXaxis()->LabelsOption(
">");
230 perchannel->Draw(
"texthist");
231 c3->Print(Form(
"%s-perchannel.pdf",outputBaseName));
243 messages.SetOwner(kTRUE);
246 for ( std::vector<int>::size_type i = 0; i <
fRunList.size(); ++i )
262 TString cname(Form(
"MCH_HV_RUN%09d",runNumber));
264 if ( strlen(dcsname) > 0 )
267 s.ReplaceAll(
"/",
"_");
268 cname += Form(
"_dcsname_%s",s.Data());
273 TLine* startRunLine(0);
274 TLine* endRunLine(0);
290 TGraph* g =
new TGraph(2);
291 g->SetName(
"runBoundaries");
292 g->SetTitle(
"run boundaries");
293 g->SetPoint(0,start,0);
294 g->SetPoint(1,end,0);
298 if ( plotIntermediate )
300 TCanvas* c =
new TCanvas(cname.Data(),cname.Data());
304 mg->SetTitle(cname.Data());
312 startRunLine =
new TLine(start,mg->GetYaxis()->GetXmin(),start,mg->GetYaxis()->GetXmax());
313 startRunLine->SetLineColor(2);
314 startRunLine->SetLineWidth(4);
318 endRunLine =
new TLine(end,mg->GetYaxis()->GetXmin(),end,mg->GetYaxis()->GetXmax());
319 endRunLine->SetLineColor(2);
320 endRunLine->SetLineWidth(4);
323 if ( startRunLine ) startRunLine->Draw();
324 if ( endRunLine ) endRunLine->Draw();
326 c->SaveAs(Form(
"%s.pdf",cname.Data()));
334 TIter next(g->GetListOfGraphs());
337 while ( ( gi = static_cast<TGraph*>(next())))
339 gi->SetMarkerStyle(kPlus);
355 messages.SetOwner(kTRUE);
358 std::map<std::string,int> channels;
360 for ( std::vector<int>::size_type i = 0; i <
fRunList.size(); ++i )
364 AliInfo(
"---------------------");
379 TIter next(&messages);
381 while ( ( msg = static_cast<TObjString*>(next())) )
383 if ( msg->String().Contains(
"TRIP") && ( includeLowOnes || !msg->String().Contains(
"LOWTRIP") ) )
389 AliInfo(Form(
"RUN %09d - %d trip%c",runNumber,ntrips,(ntrips>1 ?
's':
' ')));
392 std::map<int,std::string> report;
394 while ( ( msg = static_cast<TObjString*>(next())) )
396 if ( msg->String().Contains(
"TRIP") )
398 TObjArray* parts = msg->String().Tokenize(
" ");
399 TString channelName(static_cast<TObjString*>(parts->At(0))->String());
401 for ( Int_t ip = 0; ip <= parts->GetLast(); ++ip)
403 TString
p(static_cast<TObjString*>(parts->At(ip))->String());
405 if (
p.Contains(
"TRIP") )
407 if ( includeLowOnes || !
p.Contains(
"LOWTRIP") )
409 TString ts(static_cast<TObjString*>(parts->At(ip+2))->String());
413 Int_t index = ts.Index(
"TS:");
415 UInt_t timeStamp = TString(ts(index+strlen(
"TS:"),ts.Length()-index)).Atoi();
417 TString tmp(msg->String());
419 report[timeStamp] = tmp.Data();
420 channels[channelName.Data()]++;
428 for ( std::map<int,std::string>::const_iterator it = report.begin(); it != report.end(); ++it )
430 AliInfo(Form(
"%s %s",TTimeStamp(it->first).AsString(
"s"),it->second.c_str()));
434 AliInfo(
"--------------------------------------------------------------------");
435 AliInfo(
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
441 for ( std::map<std::string,int>::const_iterator it = channels.begin(); it != channels.end(); ++it )
443 AliInfo(Form(
"%40s %3d",
DCSNamer()->DCSNameFromAlias(it->first.c_str()).Data(),it->second));
444 totalTrips += it->second;
456 Int_t firstIndex(index);
457 Int_t lastIndex(index);
466 for (
int i = firstIndex; i <= lastIndex ; ++i )
471 AliError(Form(
"Could not get ma for de %d index %d",detElemId,i));
474 for (
int j = 0; j < ma->
GetSize(); ++j )
480 for ( Int_t iManu = 0; iManu < manuArray.
GetSize(); ++iManu )
482 Int_t manuId = manuArray.
GetValue(iManu);
486 tripMap.
Add(tripRate);
488 for ( Int_t j = 0 ; j < nofChannels; ++j )
495 AliInfo(
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
496 AliInfo(Form(
"Total of %3d trips for %4ld runs",totalTrips,
fRunList.size()));
516 TObjString* hvChannelName;
518 while ( ( hvChannelName = static_cast<TObjString*>(next()) ) )
520 TString name(hvChannelName->String());
522 if ( name.Contains(
"sw") )
continue;
523 if ( name.Contains(
"iMon") )
continue;
525 Bool_t st1Check(kFALSE);
527 if ( name.Contains(
"Chamber00Left") )
529 if (name.Contains(
"Quad1Sect0")) st1Check=kTRUE;
530 if (name.Contains(
"Quad1Sect1")) st1Check=kTRUE;
531 if (name.Contains(
"Quad1Sect2")) st1Check=kTRUE;
532 if (name.Contains(
"Quad2Sect2")) st1Check=kTRUE;
533 if (name.Contains(
"Quad2Sect1")) st1Check=kTRUE;
534 if (name.Contains(
"Quad2Sect0")) st1Check=kTRUE;
536 else if ( name.Contains(
"Chamber01Left"))
538 if (name.Contains(
"Quad2Sect2")) st1Check=kTRUE;
539 if (name.Contains(
"Quad2Sect0")) st1Check=kTRUE;
542 TPair* hvPair1 =
static_cast<TPair*
>(hv1.FindObject(name.Data()));
545 TPair* hvPair2 =
static_cast<TPair*
>(hv2.FindObject(name.Data()));
550 if ( values1->GetEntries() != values2->GetEntries() )
556 Int_t n = values1->GetEntries();
557 for ( Int_t i = 0; i < n && same == kTRUE; ++i )
574 if ( verbose && !same && st1Check )
576 std::cout << name << std::endl;
Implementation of AliMUONVTrackerData.
void Plot(const char *dcsname=0x0, Bool_t withPatch=kFALSE, Bool_t plotIntermediate=kFALSE)
time_t GetTimeStart() const
static AliMpDEStore * Instance(Bool_t warn=true)
AliMUONTrackerHV(const char *runlist, const char *ocdbPath="raw://")
void HVoff(const char *logfile="lhc11de.log", const char *outputBaseName="hvoff")
std::vector< int > fRunList
Producer of some AliMUONVTrackerData.
strP3 Tokenize("+") -> Print()
Bool_t Add(Int_t value, Bool_t warn=kTRUE)
virtual void SetDimensionName(Int_t index, const char *value)
Set the name of a given dimension.
Int_t NumberOfPCBs(Int_t detElemId) const
AliMpDetElement * GetDetElement(Int_t detElemId, Bool_t warn=true) const
Int_t CompareMaps(const TMap &hv1, const TMap &hv2, Bool_t verbose=kFALSE) const
Bool_t LoadMapping(Bool_t segmentationOnly)
The class defines the electronics properties of detection element.
void CheckHV(Int_t runNumber, Int_t verbose)
TMap * CreateMap(Int_t runNumber, Bool_t patched) const
AliMpDCSNamer * DCSNamer() const
AliCDBEntry * Get(const AliCDBId &query, Bool_t forceCaching=kFALSE)
TMap * CreateMap(Int_t runNumber, Bool_t patched=kFALSE) const
void Register(AliMUONVTrackerDataMaker *reader)
static AliMUONPainterDataRegistry * Instance()
Container of calibration values for a given number of channels.
TString DCSNameFromAlias(const char *dcsAlias) const
static Int_t ManuNofChannels()
Max number of channels per manu.
void TimeAxis(TMultiGraph *g)
void ReportTrips(Bool_t includeLowOnes=kFALSE)
TMultiGraph * Map2Graph(TMap *m, const char *dcsname)
Implementation of AliMUONVCalibParam for tuples of double.
Int_t DCSIndexFromDCSAlias(const char *dcsAlias) const
Int_t Compare(const TObject *obj) const
TMultiGraph * CombineMulti(TObjArray &graphs)
Helper class for sorted integer array.
time_t GetTimeEnd() const
Bool_t Add(const AliMUONTrackerData &data)
Basic implementation of AliMUONVStore container using AliMpExMap internally.
void SetDefaultStorage(const char *dbString)
Simple wrapper of AliMUONVTrackerData (for backward compatibility)
virtual Bool_t Add(TObject *object)
Add an object to the store.
Int_t grp(UInt_t run, TString &gdc)
virtual ~AliMUONTrackerHV()
bool IsAlmostEqualRelative(float A, float B, float maxRelDiff=FLT_EPSILON) const
static TMap * CreateHV(Int_t runNumber, Int_t *startOfValidity=0, Bool_t patched=kTRUE, TList *messages=0x0, Bool_t dryRun=kFALSE)
Create a hv map (which must be deleted) from OCDB for the given run.
const AliMpArrayI * ManusForHV(Int_t hvIndex) const
#define AliError(message)
Int_t GetValue(Int_t index) const
static AliCDBManager * Instance(TMap *entryCache=NULL, Int_t run=-1)
Int_t DetElemIdFromDCSAlias(const char *dcsAlias) const
void Scan(Int_t verbose=0)
void Print(Option_t *) const
virtual void SetValueAsDouble(Int_t i, Int_t j, Double_t value)