#if !defined(__CINT__) || defined(__MAKECINT__) #include #include #include #include #include #include #include #include "AliGeomManager.h" #include "AliHeader.h" #include "AliITS.h" #include "AliITSDetTypeRec.h" #include "AliITSgeom.h" #include "AliITSRecPoint.h" #include "AliRun.h" #endif Int_t ShowSSDRecPoints(Int_t runNumber = 0, Int_t nEvents = -1, const char* filenameRAW = 0x0) { /////////////////////////////////////////////////////////////////////// // Macro to check clusters in the 2 SSD layers // // Provides the whole set of histograms and graphs // // used by the QA framework for the SSD rec. points // // // // Author: Panos.Christakoglou@cern.ch // /////////////////////////////////////////////////////////////////////// AliCDBManager * man = AliCDBManager::Instance(); man->SetDefaultStorage("local://$ALICE_ROOT"); man->SetRun(25984); if (gClassTable->GetID("AliRun") < 0) { gInterpreter->ExecuteMacro("loadlibs.C"); } // retrives geometry if(!gGeoManager){ AliGeomManager::LoadGeometry("geometry.root"); } AliRunLoader* rl = AliRunLoader::Open("galice.root"); if (rl == 0x0){ cerr<<"Can not open session RL=NULL"<< endl; return -1; } Int_t retval = rl->LoadHeader(); if (retval){ cerr<<"LoadHeader returned error"<GetLoader("ITSLoader"); if(!ITSloader){ cerr<<"ITS loader not found"<LoadRecPoints("read"); AliITSgeom *geom = ITSloader->GetITSgeom(); Float_t cluglo[3]={0.,0.,0.}; AliITSDetTypeRec* detTypeRec = new AliITSDetTypeRec(); detTypeRec->SetITSgeom(geom); Int_t modmin=geom->GetStartDet(0); Int_t modmax=geom->GetLastDet(2); Int_t totmod=modmax-modmin; Float_t xlim[6]={4.5,7.5,16.,26.,40.,45.}; Float_t zlim[6]={15.,15.,22.,30.,45.,55.}; Int_t nITSTotalModules = AliITSgeomTGeo::GetNModules(); Int_t nModuleOffset = 500; Int_t nLaddersLayer5 = AliITSgeomTGeo::GetNLadders(5); Int_t nModulesPerLadderLayer5 = AliITSgeomTGeo::GetNDetectors(5); Int_t nModulesLayer5 = nLaddersLayer5*nModulesPerLadderLayer5; Int_t nLaddersLayer6 = AliITSgeomTGeo::GetNLadders(6); Int_t nModulesPerLadderLayer6 = AliITSgeomTGeo::GetNDetectors(6); Int_t nModulesLayer6 = nLaddersLayer5*nModulesPerLadderLayer6; //============Histograms==============// TList *list = new TList(); TH1F *fHistModuleIdLayer5 = new TH1F("fHistModuleIdLayer5", "Module Id - Layer 5;Module Id;Entries", nModulesLayer5, nModuleOffset - 0.5, nITSTotalModules-nModulesLayer6 + 0.5); list->Add(fHistModuleIdLayer5); TH1F *fHistModuleIdLayer6 = new TH1F("fHistModuleIdLayer6", "Module Id - Layer 6;Module Id;Entries", nModulesLayer6, nModuleOffset + nModulesLayer5 - 0.5, nITSTotalModules + 0.5); list->Add(fHistModuleIdLayer6); TH1F *fHistClusterPerEventLayer5 = new TH1F("fHistClusterPerEventLayer5", "N_{clusters} - Layer 5;N_{clusters};Entries;", 100,0,20); list->Add(fHistClusterPerEventLayer5); TH1F *fHistClusterPerEventLayer6 = new TH1F("fHistClusterPerEventLayer6", "N_{clusters} - Layer 6;N_{clusters};Entries;", 100,0,20); list->Add(fHistClusterPerEventLayer6); TH1F *fHistLocalXLayer5 = new TH1F("fHistLocalXLayer5", "Local x coord.- Layer 5;x [cm];Entries;", 100,-4.,4.); list->Add(fHistLocalXLayer5); TH1F *fHistLocalXLayer6 = new TH1F("fHistLocalXLayer6", "Local x coord.- Layer 6;x [cm];Entries;", 100,-4.,4.); list->Add(fHistLocalXLayer6); TH1F *fHistLocalZLayer5 = new TH1F("fHistLocalZLayer5", "Local z coord.- Layer 5;z [cm];Entries;", 100,-4.,4.); list->Add(fHistLocalZLayer5); TH1F *fHistLocalZLayer6 = new TH1F("fHistLocalZLayer6", "Local z coord.- Layer 6;z [cm];Entries;", 100,-4.,4.); list->Add(fHistLocalZLayer6); TH1F *fHistGlobalXLayer5 = new TH1F("fHistGlobalXLayer5", "Global x - Layer 5;x [cm];Entries;", 100,-xlim[4],xlim[4]); list->Add(fHistGlobalXLayer5); TH1F *fHistGlobalXLayer6 = new TH1F("fHistGlobalXLayer6", "Global x - Layer 6;x [cm];Entries;", 100,-xlim[5],xlim[5]); list->Add(fHistGlobalXLayer6); TH1F *fHistGlobalYLayer5 = new TH1F("fHistGlobalYLayer5", "Global y - Layer 5;y [cm];Entries;", 100,-xlim[4],xlim[4]); list->Add(fHistGlobalYLayer5); TH1F *fHistGlobalYLayer6 = new TH1F("fHistGlobalYLayer6", "Global y - Layer 6;y [cm];Entries;", 100,-xlim[5],xlim[5]); list->Add(fHistGlobalYLayer6); TH1F *fHistGlobalZLayer5 = new TH1F("fHistGlobalZLayer5", "Global z - Layer 5;z [cm];Entries;", 100,-zlim[4],zlim[4]); list->Add(fHistGlobalZLayer5); TH1F *fHistGlobalZLayer6 = new TH1F("fHistGlobalZLayer6", "Global z - Layer 6;z [cm];Entries;", 100,-zlim[5],zlim[5]); list->Add(fHistGlobalZLayer6); TH2F *fHistZPhiLayer5 = new TH2F("fHistZPhiLayer5", "z-#phi - Layer 5;z [cm];#phi [rad];", 100,-zlim[4],zlim[4], 100,-180.0,180.0); list->Add(fHistZPhiLayer5); TH2F *fHistZPhiLayer6 = new TH2F("fHistZPhiLayer6", "z-#phi - Layer 6;z [cm];#phi [rad];", 100,-zlim[5],zlim[5], 100,-180.0,180.0); list->Add(fHistZPhiLayer6); TH1F *fHistPhiLayer5 = new TH1F("fHistPhiLayer5", "#phi - Layer 5;#phi [deg.];Entries;", 100,-180.0,180.0); //100,-TMath::Pi(),TMath::Pi()); list->Add(fHistPhiLayer5); TH1F *fHistPhiLayer6 = new TH1F("fHistPhiLayer6", "#phi - Layer 6;#phi [deg.];Entries;", 100,-180.0,180.0); //100,-TMath::Pi(),TMath::Pi()); list->Add(fHistPhiLayer6); TH1F *fHistThetaLayer5 = new TH1F("fHistThetaLayer5", "#theta - Layer 5;#theta [rad];Entries;", 100,-TMath::Pi(),TMath::Pi()); list->Add(fHistThetaLayer5); TH1F *fHistThetaLayer6 = new TH1F("fHistThetaLayer6", "#theta - Layer 6;#theta [rad];Entries;", 100,-TMath::Pi(),TMath::Pi()); list->Add(fHistThetaLayer6); TH1F *fHistRadiusLayer5 = new TH1F("fHistRadiusLayer5", "r - Layer 5;r [cm];Entries;", 100,35.,50.); list->Add(fHistRadiusLayer5); TH1F *fHistRadiusLayer6 = new TH1F("fHistRadiusLayer6", "r - Layer 6;r [cm];Entries;", 100,35.,50.); list->Add(fHistRadiusLayer6); TH1F *fHistClusterTypeLayer5 = new TH1F("fHistClusterTypeLayer5", "CL type - Layer 5;Cluster type;Entries;", 150,0,150); list->Add(fHistClusterTypeLayer5); TH1F *fHistClusterTypeLayer6 = new TH1F("fHistClusterTypeLayer6", "CL type - Layer 6;Cluster type;Entries;", 150,0,150); list->Add(fHistClusterTypeLayer6); TH1F *fHistChargeRatioLayer5 = new TH1F("fHistChargeRatioLayer5", "Charge ratio - Layer 5;q_{ratio};Entries;", 100,-2.0,2.0); list->Add(fHistChargeRatioLayer5); TH1F *fHistChargeRatioLayer6 = new TH1F("fHistChargeRatioLayer6", "Charge ratio - Layer 6;q_{ratio};Entries;", 100,-2.0,2.0); list->Add(fHistChargeRatioLayer6); TH1F *fHistChargekeVLayer5 = new TH1F("fHistChargekeVLayer5", "Charge - Layer 5;q [keV];Entries;", 100,0.,600.); list->Add(fHistChargekeVLayer5); TH1F *fHistChargekeVLayer6 = new TH1F("fHistChargekeVLayer6", "Charge - Layer 6;q [keV];Entries;", 100,0.,600.); list->Add(fHistChargekeVLayer6); TH1F *fHistChargePSideLayer5 = new TH1F("fHistChargePSideLayer5", "Charge P- Layer 5;q_{P} [keV];Entries;", 100,0.,600.); list->Add(fHistChargePSideLayer5); TH1F *fHistChargePSideLayer6 = new TH1F("fHistChargePSideLayer6", "Charge P- Layer 6;q_{P} [keV];Entries;", 100,0.,600.); list->Add(fHistChargePSideLayer6); TH1F *fHistChargeNSideLayer5 = new TH1F("fHistChargeNSideLayer5", "Charge N- Layer 5;q_{N} [keV];Entries;", 100,0.,600.); list->Add(fHistChargeNSideLayer5); TH1F *fHistChargeNSideLayer6 = new TH1F("fHistChargeNSideLayer6", "Charge N- Layer 6;q_{N} [keV];Entries;", 100,0.,600.); list->Add(fHistChargeNSideLayer6); TH1F *fHistChargeRatio2Layer5 = new TH1F("fHistChargeRatio2Layer5", "Charge Ratio qN/qP - Layer 5;q_{N}/q_{P};Entries;", 100,0,2); list->Add(fHistChargeRatio2Layer5); TH1F *fHistChargeRatio2Layer6 = new TH1F("fHistChargeRatio2Layer6", "Charge Ratio qN/qP - Layer 6;q_{N}/q_{P};Entries;", 100,0,2); list->Add(fHistChargeRatio2Layer6); TH2F *fHistChargePNSideLayer5 = new TH2F("fHistChargePNSideLayer5", "Charge correlation - Layer 5;q_{P} [keV];q_{N} [keV]", 100,0.,600., 100,0.,600.); list->Add(fHistChargePNSideLayer5); TH2F *fHistChargePNSideLayer6 = new TH2F("fHistChargePNSideLayer6", "Charge correlation - Layer 6;q_{P} [keV];q_{N} [keV]", 100,0.,600., 100,0.,600.); list->Add(fHistChargePNSideLayer6); TH2F *fHistChargeMapLayer5 = new TH2F("fHistChargeMapLayer5", "Charge map;N_{modules};N_{Ladders}", nModulesPerLadderLayer5, -0.5,nModulesPerLadderLayer5+0.5, 3*nLaddersLayer5,-0.5,nLaddersLayer5+0.5); list->Add(fHistChargeMapLayer5); TH2F *fHistChargeMapLayer6 = new TH2F("fHistChargeMapLayer6", "Charge map;N_{modules};N_{Ladders}", nModulesPerLadderLayer6, -0.5,nModulesPerLadderLayer6+0.5, 3*nLaddersLayer6,-0.5,nLaddersLayer6+0.5); list->Add(fHistChargeMapLayer6); TH2F *fHistClusterMapLayer5 = new TH2F("fHistClusterMapLayer5", "Layer 5;N_{module};N_{ladder}", 22,1,23, 34,500,534); fHistClusterMapLayer5->GetXaxis()->SetTitleColor(1); fHistClusterMapLayer5->SetStats(kFALSE); fHistClusterMapLayer5->GetYaxis()->SetTitleOffset(1.8); fHistClusterMapLayer5->GetXaxis()->SetNdivisions(22); fHistClusterMapLayer5->GetYaxis()->SetNdivisions(34); fHistClusterMapLayer5->GetXaxis()->SetLabelSize(0.03); fHistClusterMapLayer5->GetYaxis()->SetLabelSize(0.03); fHistClusterMapLayer5->GetZaxis()->SetTitleOffset(1.6); fHistClusterMapLayer5->GetZaxis()->SetTitle("N_{clusters}"); list->Add(fHistClusterMapLayer5); TH2F *fHistClusterMapLayer6 = new TH2F("fHistClusterMapLayer6", "Layer 6;N_{module};N_{ladder}", 25,1,26, 38,600,638); fHistClusterMapLayer6->GetXaxis()->SetTitleColor(1); fHistClusterMapLayer6->SetStats(kFALSE); fHistClusterMapLayer6->GetYaxis()->SetTitleOffset(1.8); fHistClusterMapLayer6->GetXaxis()->SetNdivisions(25); fHistClusterMapLayer6->GetYaxis()->SetNdivisions(38); fHistClusterMapLayer6->GetXaxis()->SetLabelSize(0.03); fHistClusterMapLayer6->GetYaxis()->SetLabelSize(0.03); fHistClusterMapLayer6->GetZaxis()->SetTitleOffset(1.6); fHistClusterMapLayer6->GetZaxis()->SetTitle("N_{clusters}"); list->Add(fHistClusterMapLayer6); cout<<"Total number of SSD rec.points QA histograms: "<< list->GetEntries()<GetNumberOfEvents(); printf("Total Number of events = %d\n",totev); Int_t nClustersLayer5 = 0, nClustersLayer6 = 0; Int_t nEventLoop = 0; if(nEvents == -1) nEventLoop = totev; else nEventLoop = nEvents; for(Int_t iev = 0; iev < nEventLoop; iev++){ rl->GetEvent(iev); TTree *TR = ITSloader->TreeR(); TClonesArray *ITSrec = detTypeRec->RecPoints(); TBranch *branch = 0; if(TR && ITSrec){ branch = ITSloader->TreeR()->GetBranch("ITSRecPoints"); if(branch)branch->SetAddress(&ITSrec); } Int_t nparticles = rl->GetHeader()->GetNtrack(); //if(nparticles) //cout<<"Event #"<At(irec); Int_t layer = recp->GetLayer(); recp->GetGlobalXYZ(cluglo); Float_t radius = TMath::Sqrt(cluglo[0]*cluglo[0]+cluglo[1]*cluglo[1]); Float_t phi = 180.*TMath::ATan2(cluglo[1],cluglo[0])/TMath::Pi(); //Float_t phi = TMath::ATan2(cluglo[1],cluglo[0]); Float_t theta = TMath::ATan2(radius,cluglo[2]); Double_t chargeRatio = recp->GetChargeRatio(); Double_t clusterCharge = recp->GetQ(); Double_t chargePSide = clusterCharge*(1. - chargeRatio); Double_t chargeNSide = clusterCharge*(1. + chargeRatio); ipt++; if(recp->GetType() != 1) continue; if(layer == 4) { fHistModuleIdLayer5->Fill(mod); fHistLocalXLayer5->Fill(recp->GetDetLocalX()); fHistLocalZLayer5->Fill(recp->GetDetLocalZ()); fHistGlobalXLayer5->Fill(cluglo[0]); fHistGlobalYLayer5->Fill(cluglo[1]); fHistGlobalZLayer5->Fill(cluglo[2]); fHistPhiLayer5->Fill(phi); fHistThetaLayer5->Fill(theta); fHistRadiusLayer5->Fill(radius); fHistClusterTypeLayer5->Fill(recp->GetType()); fHistChargeRatioLayer5->Fill(recp->GetChargeRatio()); fHistChargekeVLayer5->Fill(recp->GetQ()); fHistChargePSideLayer5->Fill(chargePSide); fHistChargeNSideLayer5->Fill(chargeNSide); fHistZPhiLayer5->Fill(cluglo[2],phi); if(chargePSide != 0.) fHistChargeRatio2Layer5->Fill(chargeNSide/chargePSide); fHistChargePNSideLayer5->Fill(chargePSide,chargeNSide); fHistChargeMapLayer5->SetBinContent(fModule,lLadderLocationY,recp->GetQ()); fHistClusterMapLayer5->Fill(fModule,499+fLadder,1); nClustersLayer5 += 1; } if(layer == 5) { fHistModuleIdLayer6->Fill(mod); fHistLocalXLayer6->Fill(recp->GetDetLocalX()); fHistLocalZLayer6->Fill(recp->GetDetLocalZ()); fHistGlobalXLayer6->Fill(cluglo[0]); fHistGlobalYLayer6->Fill(cluglo[1]); fHistGlobalZLayer6->Fill(cluglo[2]); fHistPhiLayer6->Fill(phi); fHistThetaLayer6->Fill(theta); fHistRadiusLayer6->Fill(radius); fHistClusterTypeLayer6->Fill(recp->GetType()); fHistChargeRatioLayer6->Fill(recp->GetChargeRatio()); fHistChargekeVLayer6->Fill(recp->GetQ()); fHistChargePSideLayer6->Fill(chargePSide); fHistChargeNSideLayer6->Fill(chargeNSide); fHistZPhiLayer6->Fill(cluglo[2],phi); if(chargePSide != 0.) fHistChargeRatio2Layer6->Fill(chargeNSide/chargePSide); fHistChargePNSideLayer6->Fill(chargePSide,chargeNSide); fHistChargeMapLayer6->SetBinContent(fModule,lLadderLocationY,recp->GetQ()); fHistClusterMapLayer6->Fill(fModule,599+fLadder,1); nClustersLayer6 += 1; } }//rec. point loop }//if module has rec. point }//module loop fHistClusterPerEventLayer5->Fill(nClustersLayer5); fHistClusterPerEventLayer6->Fill(nClustersLayer6); }//event loop TString outputFilename = "SSD.RecPoints.QA."; outputFilename += runNumber; outputFilename += ".root"; TFile *f = TFile::Open(outputFilename.Data(),"recreate"); list->Write(); f->Close(); Int_t ssdPhysicsEvents = 0; if(filenameRAW) ssdPhysicsEvents = readRawData(filenameRAW); drawSSDRecPointsQA(runNumber,ssdPhysicsEvents); return 0; } //____________________________________________// void drawSSDRecPointsQA(Int_t runNumber, Int_t nEvents = 0) { gStyle->SetPalette(1,0); TString filename = "SSD.RecPoints.QA."; filename += runNumber; filename += ".root"; TString fTitle = 0, fTitleOutput = 0; TFile *f = TFile::Open(filename.Data()); TCanvas *c0 = new TCanvas("c0","Clusters per event",0,0,600,300); c0->SetFillColor(10); c0->GetFrame()->SetFillColor(10); c0->SetHighLightColor(10); c0->Divide(2,1); c0->cd(1); c0->cd(1)->SetBottomMargin(.2); c0->cd(1)->SetLeftMargin(.15); TH1F *fHistClusterPerEventLayer5 = (TH1F *)f->Get("fHistClusterPerEventLayer5"); fHistClusterPerEventLayer5->SetStats(kFALSE); fHistClusterPerEventLayer5->GetXaxis()->SetTitleSize(0.05); fHistClusterPerEventLayer5->GetYaxis()->SetTitleSize(0.05); fHistClusterPerEventLayer5->GetXaxis()->SetTitleColor(1); fHistClusterPerEventLayer5->GetXaxis()->SetLabelSize(0.05); fHistClusterPerEventLayer5->GetYaxis()->SetLabelSize(0.05); fHistClusterPerEventLayer5->GetYaxis()->SetTitleOffset(1.6); fHistClusterPerEventLayer5->SetFillColor(kRed-2); fHistClusterPerEventLayer5->Draw(); c0->cd(2); c0->cd(2)->SetBottomMargin(.2); c0->cd(2)->SetLeftMargin(.15); TH1F *fHistClusterPerEventLayer6 = (TH1F *)f->Get("fHistClusterPerEventLayer6"); fHistClusterPerEventLayer6->SetStats(kFALSE); fHistClusterPerEventLayer6->GetXaxis()->SetTitleSize(0.05); fHistClusterPerEventLayer6->GetYaxis()->SetTitleSize(0.05); fHistClusterPerEventLayer6->GetXaxis()->SetTitleColor(1); fHistClusterPerEventLayer6->GetXaxis()->SetLabelSize(0.05); fHistClusterPerEventLayer6->GetYaxis()->SetLabelSize(0.05); fHistClusterPerEventLayer6->GetYaxis()->SetTitleOffset(1.6); fHistClusterPerEventLayer6->SetFillColor(kRed-2); fHistClusterPerEventLayer6->Draw(); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += ; c0->SaveAs(fTitleOutput.Data()); c0->SaveAs("ClusterPerEvent.gif"); TCanvas *c1 = new TCanvas("c1","Module ID",0,0,600,300); c1->SetFillColor(10); c1->GetFrame()->SetFillColor(10); c1->SetHighLightColor(10); c1->Divide(2,1); c1->cd(1); TH1F *fHistModuleIdLayer5 = (TH1F *)f->Get("fHistModuleIdLayer5"); fHistModuleIdLayer5->SetFillColor(kRed-2); fHistModuleIdLayer5->Draw(); c1->cd(2); TH1F *fHistModuleIdLayer6 = (TH1F *)f->Get("fHistModuleIdLayer6"); fHistModuleIdLayer6->SetFillColor(kRed-2); fHistModuleIdLayer6->Draw(); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "ModuleId.gif"; c1->SaveAs(fTitleOutput.Data()); TCanvas *c2 = new TCanvas("c2","Local coordinates",0,100,600,600); c2->SetFillColor(10); c2->GetFrame()->SetFillColor(10); c2->SetHighLightColor(10); c2->Divide(2,2); c2->cd(1); TH1F *fHistLocalXLayer5 = (TH1F *)f->Get("fHistLocalXLayer5"); fHistLocalXLayer5->SetFillColor(kRed-2); fHistLocalXLayer5->Draw(); c2->cd(2); TH1F *fHistLocalXLayer6 = (TH1F *)f->Get("fHistLocalXLayer6"); fHistLocalXLayer6->SetFillColor(kRed-2); fHistLocalXLayer6->Draw(); c2->cd(3); TH1F *fHistLocalZLayer5 = (TH1F *)f->Get("fHistLocalZLayer5"); fHistLocalZLayer5->SetFillColor(kRed-2); fHistLocalZLayer5->Draw(); c2->cd(4); TH1F *fHistLocalZLayer6 = (TH1F *)f->Get("fHistLocalZLayer6"); fHistLocalZLayer6->SetFillColor(kRed-2); fHistLocalZLayer6->Draw(); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "LocalCoordinates.gif"; c2->SaveAs(fTitleOutput.Data()); TCanvas *c3 = new TCanvas("c3","Global coordinates",0,200,800,500); c3->SetFillColor(10); c3->GetFrame()->SetFillColor(10); c3->SetHighLightColor(10); c3->Divide(3,2); c3->cd(1); TH1F *fHistGlobalXLayer5 = (TH1F *)f->Get("fHistGlobalXLayer5"); fHistGlobalXLayer5->SetFillColor(kRed-2); fHistGlobalXLayer5->Draw(); c3->cd(4); TH1F *fHistGlobalXLayer6 = (TH1F *)f->Get("fHistGlobalXLayer6"); fHistGlobalXLayer6->SetFillColor(kRed-2); fHistGlobalXLayer6->Draw(); c3->cd(2); TH1F *fHistGlobalYLayer5 = (TH1F *)f->Get("fHistGlobalYLayer5"); fHistGlobalYLayer5->SetFillColor(kRed-2); fHistGlobalYLayer5->Draw(); c3->cd(5); TH1F *fHistGlobalYLayer6 = (TH1F *)f->Get("fHistGlobalYLayer6"); fHistGlobalYLayer6->SetFillColor(kRed-2); fHistGlobalYLayer6->Draw(); c3->cd(3); TH1F *fHistGlobalZLayer5 = (TH1F *)f->Get("fHistGlobalZLayer5"); fHistGlobalZLayer5->SetFillColor(kRed-2); fHistGlobalZLayer5->Draw(); c3->cd(6); TH1F *fHistGlobalZLayer6 = (TH1F *)f->Get("fHistGlobalZLayer6"); fHistGlobalZLayer6->SetFillColor(kRed-2); fHistGlobalZLayer6->Draw(); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "GlobalCoordinates.gif"; c3->SaveAs(fTitleOutput.Data()); TCanvas *c4 = new TCanvas("c4","Cylindrical coordinates",0,300,800,500); c4->SetFillColor(10); c4->GetFrame()->SetFillColor(10); c4->SetHighLightColor(10); c4->Divide(3,2); c4->cd(1); TH1F *fHistPhiLayer5 = (TH1F *)f->Get("fHistPhiLayer5"); fHistPhiLayer5->SetFillColor(kRed-2); fHistPhiLayer5->Draw(); c4->cd(4); TH1F *fHistPhiLayer6 = (TH1F *)f->Get("fHistPhiLayer6"); fHistPhiLayer6->SetFillColor(kRed-2); fHistPhiLayer6->Draw(); c4->cd(2); TH1F *fHistThetaLayer5 = (TH1F *)f->Get("fHistThetaLayer5"); fHistThetaLayer5->SetFillColor(kRed-2); fHistThetaLayer5->Draw(); c4->cd(5); TH1F *fHistThetaLayer6 = (TH1F *)f->Get("fHistThetaLayer6"); fHistThetaLayer6->SetFillColor(kRed-2); fHistThetaLayer6->Draw(); c4->cd(3); TH1F *fHistRadiusLayer5 = (TH1F *)f->Get("fHistRadiusLayer5"); fHistRadiusLayer5->SetFillColor(kRed-2); fHistRadiusLayer5->Draw(); c4->cd(6); TH1F *fHistRadiusLayer6 = (TH1F *)f->Get("fHistRadiusLayer6"); fHistRadiusLayer6->SetFillColor(kRed-2); fHistRadiusLayer6->Draw(); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "CylindricalCoordinates.gif"; c4->SaveAs(fTitleOutput.Data()); TCanvas *c5 = new TCanvas("c5","Charge",0,400,800,500); c5->SetFillColor(10); c5->GetFrame()->SetFillColor(10); c5->SetHighLightColor(10); c5->Divide(3,2); c5->cd(1); TH1F *fHistClusterTypeLayer5 = (TH1F *)f->Get("fHistClusterTypeLayer5"); fHistClusterTypeLayer5->SetFillColor(kRed-2); fHistClusterTypeLayer5->Draw(); c5->cd(4); TH1F *fHistClusterTypeLayer6 = (TH1F *)f->Get("fHistClusterTypeLayer6"); fHistClusterTypeLayer6->SetFillColor(kRed-2); fHistClusterTypeLayer6->Draw(); c5->cd(2); TH1F *fHistChargeRatioLayer5 = (TH1F *)f->Get("fHistChargeRatioLayer5"); fHistChargeRatioLayer5->SetFillColor(kRed-2); fHistChargeRatioLayer5->Draw(); c5->cd(5); TH1F *fHistChargeRatioLayer6 = (TH1F *)f->Get("fHistChargeRatioLayer6"); fHistChargeRatioLayer6->SetFillColor(kRed-2); fHistChargeRatioLayer6->Draw(); c5->cd(3); TH1F *fHistChargekeVLayer5 = (TH1F *)f->Get("fHistChargekeVLayer5"); fHistChargekeVLayer5->SetFillColor(kRed-2); fHistChargekeVLayer5->Draw(); c5->cd(6); TH1F *fHistChargekeVLayer6 = (TH1F *)f->Get("fHistChargekeVLayer6"); fHistChargekeVLayer6->SetFillColor(kRed-2); fHistChargekeVLayer6->Draw(); c5->cd(7); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "ClusterCharge-1.gif"; c5->SaveAs(fTitleOutput.Data()); TCanvas *c6 = new TCanvas("c6","Charge Details",0,500,800,500); c6->SetFillColor(10); c6->GetFrame()->SetFillColor(10); c6->SetHighLightColor(10); c6->Divide(3,2); c6->cd(1); TH1F *fHistChargePSideLayer5 = (TH1F *)f->Get("fHistChargePSideLayer5"); fHistChargePSideLayer5->SetFillColor(kRed-2); fHistChargePSideLayer5->Draw(); c6->cd(4); TH1F *fHistChargePSideLayer6 = (TH1F *)f->Get("fHistChargePSideLayer6"); fHistChargePSideLayer6->SetFillColor(kRed-2); fHistChargePSideLayer6->Draw(); c6->cd(2); TH1F *fHistChargeNSideLayer5 = (TH1F *)f->Get("fHistChargeNSideLayer5"); fHistChargeNSideLayer5->SetFillColor(kRed-2); fHistChargeNSideLayer5->Draw(); c6->cd(5); TH1F *fHistChargeNSideLayer6 = (TH1F *)f->Get("fHistChargeNSideLayer6"); fHistChargeNSideLayer6->SetFillColor(kRed-2); fHistChargeNSideLayer6->Draw(); c6->cd(3); TH1F *fHistChargeRatio2Layer5 = (TH1F *)f->Get("fHistChargeRatio2Layer5"); fHistChargeRatio2Layer5->SetFillColor(kRed-2); fHistChargeRatio2Layer5->Draw(); c6->cd(6); TH1F *fHistChargeRatio2Layer6 = (TH1F *)f->Get("fHistChargeRatio2Layer6"); fHistChargeRatio2Layer6->SetFillColor(kRed-2); fHistChargeRatio2Layer6->Draw(); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "ClusterCharge-2.gif"; c6->SaveAs(fTitleOutput.Data()); TCanvas *c7 = new TCanvas("c7","Charge Map",0,600,600,600); c7->SetFillColor(10); c7->GetFrame()->SetFillColor(10); c7->SetHighLightColor(10); c7->Divide(2,2); c7->cd(1); TH2F *fHistChargePNSideLayer5 = (TH2F *)f->Get("fHistChargePNSideLayer5"); fHistChargePNSideLayer5->Draw("colz"); c7->cd(2); TH2F *fHistChargePNSideLayer6 = (TH2F *)f->Get("fHistChargePNSideLayer6"); fHistChargePNSideLayer6->Draw("colz"); c7->cd(3); TH2F *fHistChargeMapLayer5 = (TH2F *)f->Get("fHistChargeMapLayer5"); fHistChargeMapLayer5->Draw("colz"); c7->cd(4); TH2F *fHistChargeMapLayer6 = (TH2F *)f->Get("fHistChargeMapLayer6"); fHistChargeMapLayer6->Draw("colz"); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "ClusterCharge-2D.gif"; c7->SaveAs(fTitleOutput.Data()); TCanvas *c8 = new TCanvas("c8","Charge Map",200,0,600,400); c8->SetFillColor(10); c8->GetFrame()->SetFillColor(10); c8->SetHighLightColor(10); c8->Divide(2,1); c8->cd(1)->SetLeftMargin(0.15); c8->cd(1)->SetRightMargin(0.15); TH2F *fHistClusterMapLayer5 = (TH2F *)f->Get("fHistClusterMapLayer5"); if(nEvents) fHistClusterMapLayer5->Scale(1./nEvents); //fHistClusterMapLayer5->SetStats(kTRUE); fHistClusterMapLayer5->Draw("colz"); c8->cd(2)->SetLeftMargin(0.15); c8->cd(2)->SetRightMargin(0.15); TH2F *fHistClusterMapLayer6 = (TH2F *)f->Get("fHistClusterMapLayer6"); if(nEvents) fHistClusterMapLayer6->Scale(1./nEvents); //fHistClusterMapLayer6->SetStats(kTRUE); fHistClusterMapLayer6->Draw("colz"); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "ClusterMap.gif"; c8->SaveAs(fTitleOutput.Data()); TCanvas *c9 = new TCanvas("c9","Z-Phi Map",200,200,600,400); c9->SetFillColor(10); c9->GetFrame()->SetFillColor(10); c9->SetHighLightColor(10); c9->Divide(2,1); c9->cd(1)->SetLeftMargin(0.15); c9->cd(1)->SetRightMargin(0.15); TH2F *fHistZPhiLayer5 = (TH2F *)f->Get("fHistZPhiLayer5"); fHistZPhiLayer5->Draw("colz"); c9->cd(2)->SetLeftMargin(0.15); c9->cd(2)->SetRightMargin(0.15); TH2F *fHistZPhiLayer6 = (TH2F *)f->Get("fHistZPhiLayer6"); fHistZPhiLayer6->Draw("colz"); fTitleOutput = "Run"; fTitleOutput += runNumber; fTitleOutput += "-"; fTitleOutput += "ZPhiMap.gif"; c9->SaveAs(fTitleOutput.Data()); } //____________________________________________// Int_t readRawData(const char *filename = 0x0) { TChain *chain = new TChain("RAW"); chain->Add(filename); Int_t nTotalEvents = chain->GetEntries(); Int_t nPhysicsEvents = 0; AliRawReaderRoot *rawReader = new AliRawReaderRoot(filename); for(Int_t iEvent = 0; iEvent < nTotalEvents; iEvent++) { rawReader->Reset(); rawReader->NextEvent(); TTimeStamp *timeStamp = new TTimeStamp(rawReader->GetTimestamp()); cout<<"Event: "<GetType()<< " - Time stamp: "<GetDate()<< " - "<GetTime()<GetType() == 7) nPhysicsEvents += 1; } cout<<"\n Total number of PHYSICS_EVENTS: "<