Logo ROOT  
Reference Guide
SQLitePlatformDistribution.C File Reference

Detailed Description

View in nbviewer Open in SWAN

This tutorial demonstrates how TSQLServer can be used to create a connection with a SQlite3 database. It accesses the Sqlite data base. Download from https://root.cern/download/root_download_stats.sqlite In order to display the Platform Distribution of ROOT, we choose to create two TH1F histograms: one that includes all types of platforms, other filtering and classifying them. This procedure is taking as parameter the values stored in the "Platform" column from the database. At the end, the histograms are filled with their specific demand regarding the platform's type. This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com.

#include <TSQLiteServer.h>
#include <TSQLiteResult.h>
#include <TSQLRow.h>
#include <TString.h>
void SQLitePlatformDistribution(){
TSQLServer *db = TSQLServer::Connect("sqlite://root_download_stats.sqlite", "", "");
const char *rootPlatform = "SELECT Platform FROM accesslog;";
TSQLResult *rootPlatformRes = db->Query(rootPlatform);
TH1F *hrootPlatform = new TH1F("hrootPlatform", "Platform Distribution", 7, 0, -1);
TH1F *shorthrootPlatform = new TH1F("shorthrootPlatform", "Short Platform Distribution", 7, 0, -1);
while (TSQLRow *row = rootPlatformRes->Next()) {
TString rowPlatform(row->GetField(0));
TString Platform(rowPlatform);
TString Platform_0(rowPlatform(0,5));
TString Platform_1(rowPlatform(0,6));
TString Platform_2(rowPlatform(0,8));
if ( rowPlatform.Contains("win32") ){
shorthrootPlatform->Fill(Platform_0,1);
} else if ( rowPlatform.Contains("Linux") ){
shorthrootPlatform->Fill(Platform_0,1);
} else if ( rowPlatform.Contains("source") ){
shorthrootPlatform->Fill(Platform_1,1);
} else if ( rowPlatform.Contains("macosx64") ){
shorthrootPlatform->Fill(Platform_2,1);
} else if ( rowPlatform.Contains("IRIX64") ){
shorthrootPlatform->Fill(Platform_1,1);
}
hrootPlatform->Fill(Platform,1);
delete row;
}
TCanvas *PlatformDistributionHistogram = new TCanvas();
hrootPlatform->GetXaxis()->LabelsOption("a");
hrootPlatform->LabelsDeflate("X");
hrootPlatform->Draw();
TCanvas *shortPlatformDistributionHistogram = new TCanvas();
shorthrootPlatform->GetXaxis()->LabelsOption("a");
shorthrootPlatform->LabelsDeflate("X");
shorthrootPlatform->Draw();
}
Author
Alexandra-Maria Dobrescu 08/2018

Definition in file SQLitePlatformDistribution.C.

TSQLResult::Next
virtual TSQLRow * Next()=0
TSQLiteResult.h
TSQLiteServer.h
TString
Definition: TString.h:136
TAxis::LabelsOption
virtual void LabelsOption(Option_t *option="h")
Set option(s) to draw axis with labels option can be:
Definition: TAxis.cxx:613
TString.h
TSQLResult
Definition: TSQLResult.h:32
TSQLServer::Connect
static TSQLServer * Connect(const char *db, const char *uid, const char *pw)
The db should be of the form: <dbms>://<host>[:<port>][/<database>], e.g.
Definition: TSQLServer.cxx:61
TSQLServer::Query
virtual TSQLResult * Query(const char *sql)=0
TSQLRow
Definition: TSQLRow.h:30
TSQLRow.h
TH1::Fill
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Definition: TH1.cxx:3274
TH1::LabelsDeflate
virtual void LabelsDeflate(Option_t *axis="X")
Reduce the number of bins for the axis passed in the option to the number of bins having a label.
Definition: TH1.cxx:5090
TCanvas
Definition: TCanvas.h:23
TH1F
1-D histogram with a float per channel (see TH1 documentation)}
Definition: TH1.h:572
TH1::GetXaxis
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
Definition: TH1.h:317
TSQLServer
Definition: TSQLServer.h:41
TH1::Draw
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Definition: TH1.cxx:2997