]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/PlotDriftSpeedSDDVsTime.C
Add plot in macro for monitoring drift speed vs. time (Sergey)
[u/mrichter/AliRoot.git] / ITS / PlotDriftSpeedSDDVsTime.C
index e142093150effb28f28027a3263122a635b8afeb..58ee8d4e80939503d218d5d50e14a7ec355850d2 100644 (file)
@@ -27,7 +27,7 @@
 
 void FillErrors(Float_t errSpeed[260]);
 
-void PlotDriftSpeedSDDVsTime(Int_t year=2009, Int_t firstRun=62840, 
+void PlotDriftSpeedSDDVsTime(Int_t year=2010, Int_t firstRun=62840, 
                             Int_t lastRun=999999999,
                             Int_t anode=128){
   TGrid::Connect("alien:",0,0,"t");
@@ -39,7 +39,6 @@ void PlotDriftSpeedSDDVsTime(Int_t year=2009, Int_t firstRun=62840,
   Char_t filnam[200],filnamalien[200];
   TGraphErrors** gvdrvstime=new TGraphErrors*[520];
   TGraphErrors** gvdrvsrun=new TGraphErrors*[520];
-  Int_t iPt[260];
   for(Int_t iMod=0; iMod<260;iMod++){
     gvdrvstime[iMod]=new TGraphErrors(0);    
     gvdrvstime[iMod]->SetTitle(Form("Module %d",iMod+240));
@@ -47,7 +46,6 @@ void PlotDriftSpeedSDDVsTime(Int_t year=2009, Int_t firstRun=62840,
     gvdrvsrun[iMod]=new TGraphErrors(0);    
     gvdrvsrun[iMod]->SetTitle(Form("Module %d",iMod+240));
     gvdrvsrun[iMod]->SetName(Form("gspmod%dr",iMod+240));
-    iPt[iMod]=0;
   }
   Float_t Edrift=(1800-45)/291/0.012;  
   Int_t nrun,nrun2,nv,ns;
@@ -78,22 +76,24 @@ void PlotDriftSpeedSDDVsTime(Int_t year=2009, Int_t firstRun=62840,
       Int_t iAn=anode;
       if(anode>256) iAn=anode-256;
       Float_t vdrift=vdriftarr->GetDriftSpeed(0,iAn);
+      if(vdrift<4. || vdrift > 8.) continue;
       UInt_t timest=vdriftarr->GetTimestamp(0);
-     if(timest==0) continue;
-      Float_t timeday;
-     if(year==2009){
-       timeday=float(timest-1247762992)/60./60./24.;
-      } else {
-       timeday=float(timest-1264531801)/60./60./24.;
-     }
+      if(timest==0) continue;
+      Int_t npt=gvdrvsrun[iMod]->GetN();
+      gvdrvsrun[iMod]->SetPoint(npt,(Float_t)nrun,vdrift);
+      gvdrvsrun[iMod]->SetPointError(npt,0,errSpeed[iMod]);
+      
+      Float_t timeZero;
+      if(year==2009) timeZero=1247762992;
+      else timeZero=1262300400;
+      if(timest<timeZero) continue;
+      Float_t timeday=float(timest-timeZero)/60./60./24.;
       Float_t mob=vdrift*1.E5/Edrift;  
       Float_t temper=293.15*TMath::Power((mob/1350.),-1/2.4); 
       if(iMod==497-240) printf("Run %s   Time %d Day %f Speed=%f Temp=%f\n",filnam,timest,timeday,vdrift,temper);
-      gvdrvstime[iMod]->SetPoint(iPt[iMod],timeday,vdrift);
-      gvdrvstime[iMod]->SetPointError(iPt[iMod],0,errSpeed[iMod]);
-      gvdrvsrun[iMod]->SetPoint(iPt[iMod],(Float_t)nrun,vdrift);
-      gvdrvsrun[iMod]->SetPointError(iPt[iMod],0,errSpeed[iMod]);
-      ++iPt[iMod];
+      npt=gvdrvstime[iMod]->GetN();
+      gvdrvstime[iMod]->SetPoint(npt,timeday,vdrift);
+      gvdrvstime[iMod]->SetPointError(npt,0,errSpeed[iMod]);
     }
     f->Close();
   }
@@ -143,7 +143,7 @@ void PlotDriftSpeedSDDVsTime(Int_t year=2009, Int_t firstRun=62840,
   if(year==2009){
   sprintf(title,"Time (days since July 16th 2009)");
   }else if (year==2010){
-  sprintf(title,"Time (days since January 16th 2010)");
+  sprintf(title,"Time (days since January 1st 2010)");
   }
   gvdrvstime[mod1]->GetXaxis()->SetTitle(title);
   gvdrvstime[mod1]->GetYaxis()->SetTitle("Drift speed (#mum/ns)");
@@ -186,6 +186,73 @@ void PlotDriftSpeedSDDVsTime(Int_t year=2009, Int_t firstRun=62840,
   gvdrvsrun[mod3]->Draw("PSAME");
   gvdrvsrun[mod4]->Draw("PSAME");
   leg->Draw();
+
+
+  TH2F* hlay3=new TH2F("hlay3","Variation of the drift speed (%) Layer 3",6,-0.5,5.5,14,-0.5,13.5);
+  hlay3->GetXaxis()->SetTitle("Detector");
+  hlay3->GetYaxis()->SetTitle("Ladder");
+  hlay3->GetXaxis()->SetTickLength(0);
+  hlay3->GetYaxis()->SetTickLength(0);
+  hlay3->SetStats(0);
+
+  TH2F* hlay4=new TH2F("hlay4","Variation of the drift speed (%) Layer 4",8,-0.5,7.5,22,-0.5,21.5);
+  hlay4->GetXaxis()->SetTitle("Detector");
+  hlay4->GetYaxis()->SetTitle("Ladder");
+  hlay4->GetXaxis()->SetTickLength(0);
+  hlay4->GetYaxis()->SetTickLength(0);
+  hlay4->GetYaxis()->SetTitle("Ladder");
+  hlay4->SetStats(0);
+
+  Double_t run1,run2,vdr1,vdr2;
+  Int_t lay,lad,det;
+  for(Int_t iMod=0; iMod<260; iMod++){
+    Int_t lastPoint=gvdrvsrun[iMod]->GetN()-1;
+    gvdrvsrun[iMod]->GetPoint(lastPoint,run2,vdr2);
+    gvdrvsrun[iMod]->GetPoint(lastPoint-1,run1,vdr1);
+    Float_t diff=0.;
+    if(vdr1>0.) diff=100*(vdr2-vdr1)/vdr1;
+    AliITSgeomTGeo::GetModuleId(iMod+240,lay,lad,det);
+    if(lay==3) hlay3->SetBinContent(det,lad,diff);
+    if(lay==4) hlay4->SetBinContent(det,lad,diff);
+  }
+  TLine* lin=new TLine(0,0,0,23);  
+  gStyle->SetPalette(1);
+
+  TCanvas *c0b=new TCanvas("c0b","Percent difference Last Run - Previous Run",900,600);
+  c0b->Divide(2,1);
+  c0b->cd(1);
+  hlay3->DrawCopy("colz");
+  for(Int_t i=0;i<6;i++){
+    lin->SetY1(-0.5);
+    lin->SetY2(13.5);
+    lin->SetX1(i+0.5);
+    lin->SetX2(i+0.5);
+    lin->DrawClone();
+  }
+  for(Int_t i=0;i<14;i++){
+    lin->SetX1(-0.5);
+    lin->SetX2(5.5);
+    lin->SetY1(i+0.5);
+    lin->SetY2(i+0.5);
+    lin->DrawClone();
+  }
+  c0b->cd(2);
+  hlay4->DrawCopy("colz");
+  for(Int_t i=0;i<8;i++){
+    lin->SetY1(-0.5);
+    lin->SetY2(21.5);
+    lin->SetX1(i+0.5);
+    lin->SetX2(i+0.5);
+    lin->DrawClone();
+  }
+  for(Int_t i=0;i<22;i++){
+    lin->SetX1(-0.5);
+    lin->SetX2(7.5);
+    lin->SetY1(i+0.5);
+    lin->SetY2(i+0.5);
+    lin->DrawClone();
+  }
+  
 }
 
 void FillErrors(Float_t errSpeed[260]){