ROOT logo
void AliITSspdLayer1Coverage(TString hfn="galice.root",Int_t mod=-1,
                     Int_t evnt=-1){
  // Macro to show the coverage of each spd layer 1 module

  // Dynamically link some shared libs
  if (gClassTable->GetID("AliRun") < 0) {
    gROOT->LoadMacro("loadlibs.C");
    loadlibs();
  } else {
    if(gAlice){
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice=0;
    }
  }
  gROOT->LoadMacro("$(ALICE_ROOT)/ITS/AliITSstandard.C");
  // Set OCDB if needed
  AliCDBManager* man = AliCDBManager::Instance();
  if (!man->IsDefaultStorageSet()) {
    printf("Setting a local default storage and run number 0\n");
    man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    man->SetRun(0);
  }else {
    printf("Using deafult storage \n");
  }
  // retrives geometry 
  TString geof(gSystem->DirName(hfn));
  geof += "/geometry.root";
  TGeoManager::Import(geof.Data());
  if (!gGeoManager) {
    cout<<"geometry not found\n";
    return -1;
  }


  AliRunLoader *rl = AccessFile(hfn); // Set up to read in Data
  Int_t retval = rl->LoadHeader();
  if (retval){
    cerr<<"AliITSPrintHits.C : LoadHeader returned error"<<endl;
    return;
  }

  AliITSLoader* ITSloader =  (AliITSLoader*) rl->GetLoader("ITSLoader");

  if(!ITSloader){
    cerr<<"AliITSPrintHits.C :  ITS loader not found"<<endl;
    return;
  }

  ITSloader->LoadHits("read");
  AliITS *ITS = (AliITS*)gAlice->GetDetector("ITS");
  if(!ITS || ITS==0){
    cout << "Error: no ITS found. Aborting"<<endl;
    return;
  } // end if !ITS
  //cout << ITS << endl;
  AliITSInitGeometry *initgeom = new AliITSInitGeometry(ITS->GetMajorVersion(),ITS->GetMinorVersion());
  //cout << initgeom << endl;
  AliITSgeom *geom = initgeom->CreateAliITSgeom();
  if(!geom){
    cout << "Error: not AliITSgeom object found."<<endl;
    return;
  } // end if geom
  ITSloader->SetITSgeom(geom);

  Int_t evNumber1 = 0;
  Int_t evNumber2 = AliRunLoader::GetNumberOfEvents();
  if(evnt>=0){
    evNumber1 = evnt;
    evNumber2 = evnt+1;
  } // end if evnt>=0
  Int_t mod1 = 0;
  Int_t mod2 = geom->GetIndexMax();
  if(mod>=0){
    mod1 = mod;
    mod2 = mod+1;
  } // end if mod>=0
  AliITShit *hp = 0;

  Int_t i;
  Double_t zbin[161];
  for(i=0;i<161;i++) zbin[i] = 425.0E-4;
  zbin[32] = zbin[64] = zbin[96] = zbin[128] = 625.0E-4;
  zbin[0] = -3.536;
  for(i=1;i<161;i++) zbin[i] += zbin[i-1];
  Char_t name[20],title[40];
  TH2I *detCoverage[4*2*10];
  for(i=0;i<4*2*10;i++){
    sprintf(name,"detCoverage[%d]",i);
    sprintf(title,"Cell coverage for SPD module %d",i);
    detCoverage[i] = new TH2I(name,title,160,(Double_t *)zbin,256,-0.64,+0.64);
  } // end for i
  Double_t xg,yg,zg,xl,yl,zl,phi;
  Int_t nmodules,size=-1;
  Int_t event,m,i,i2,hit,trk,lay,lad,det;
  for(event = evNumber1; event < evNumber2; event++){
    //cout<<"Processing event "<<event<<endl;
    rl->GetEvent(event);
    ITS->InitModules(size,nmodules);
    ITS->FillModules(event,0,-1," "," ");
    for(m=mod1;m<mod2;m++)if(geom->GetModuleType(m)==(AliITSDetector)(0)){
      i2 = (ITS->GetModule(m))->GetNhits();
      //cout <<  "Event=" << event << " module=" << m <<
      //  " Number of Hits=" << i2 <<endl;
      for(i=0;i<i2;i++){
        trk = (ITS->GetModule(m))->GetHitTrackIndex(i);
        hit = (ITS->GetModule(m))->GetHitHitIndex(i);
        hp  = (ITS->GetModule(m))->GetHit(i);
	hp->GetPositionG(xg,yg,zg);
	hp->GetPositionL(xl,yl,zl);
	geom->GetModuleId(m,lay,lad,det);
	phi = TMath::ATan2(yg,xg)*TMath::RadToDeg();
	if(phi<0.0) phi+=360.0;
	switch(lay){
	case 1:
	  detCoverage[m]->Fill(zl,xl,1.0);
	  break;
	case 2:
	break;
	default:
	} // end switch
      } // end for i
    } // end for m
    ITS->ClearModules();
  } // end for event
  //
  cout << "Creating pad"<<endl;
  TVirtualPad *pad=0;
  TCanvas *c0 = new TCanvas("c0","SPD Hits Tests",262,50,700,534);
  c0->Divide(4,20,.0,0.0);
  //
  for(i=0;i<4*2*10;i++){
    c0->cd(i+1);
    detCoverage[i]->Draw();
  } // end for i
  c0->Update();
}
 AliITSspdLayer1Coverage.C:1
 AliITSspdLayer1Coverage.C:2
 AliITSspdLayer1Coverage.C:3
 AliITSspdLayer1Coverage.C:4
 AliITSspdLayer1Coverage.C:5
 AliITSspdLayer1Coverage.C:6
 AliITSspdLayer1Coverage.C:7
 AliITSspdLayer1Coverage.C:8
 AliITSspdLayer1Coverage.C:9
 AliITSspdLayer1Coverage.C:10
 AliITSspdLayer1Coverage.C:11
 AliITSspdLayer1Coverage.C:12
 AliITSspdLayer1Coverage.C:13
 AliITSspdLayer1Coverage.C:14
 AliITSspdLayer1Coverage.C:15
 AliITSspdLayer1Coverage.C:16
 AliITSspdLayer1Coverage.C:17
 AliITSspdLayer1Coverage.C:18
 AliITSspdLayer1Coverage.C:19
 AliITSspdLayer1Coverage.C:20
 AliITSspdLayer1Coverage.C:21
 AliITSspdLayer1Coverage.C:22
 AliITSspdLayer1Coverage.C:23
 AliITSspdLayer1Coverage.C:24
 AliITSspdLayer1Coverage.C:25
 AliITSspdLayer1Coverage.C:26
 AliITSspdLayer1Coverage.C:27
 AliITSspdLayer1Coverage.C:28
 AliITSspdLayer1Coverage.C:29
 AliITSspdLayer1Coverage.C:30
 AliITSspdLayer1Coverage.C:31
 AliITSspdLayer1Coverage.C:32
 AliITSspdLayer1Coverage.C:33
 AliITSspdLayer1Coverage.C:34
 AliITSspdLayer1Coverage.C:35
 AliITSspdLayer1Coverage.C:36
 AliITSspdLayer1Coverage.C:37
 AliITSspdLayer1Coverage.C:38
 AliITSspdLayer1Coverage.C:39
 AliITSspdLayer1Coverage.C:40
 AliITSspdLayer1Coverage.C:41
 AliITSspdLayer1Coverage.C:42
 AliITSspdLayer1Coverage.C:43
 AliITSspdLayer1Coverage.C:44
 AliITSspdLayer1Coverage.C:45
 AliITSspdLayer1Coverage.C:46
 AliITSspdLayer1Coverage.C:47
 AliITSspdLayer1Coverage.C:48
 AliITSspdLayer1Coverage.C:49
 AliITSspdLayer1Coverage.C:50
 AliITSspdLayer1Coverage.C:51
 AliITSspdLayer1Coverage.C:52
 AliITSspdLayer1Coverage.C:53
 AliITSspdLayer1Coverage.C:54
 AliITSspdLayer1Coverage.C:55
 AliITSspdLayer1Coverage.C:56
 AliITSspdLayer1Coverage.C:57
 AliITSspdLayer1Coverage.C:58
 AliITSspdLayer1Coverage.C:59
 AliITSspdLayer1Coverage.C:60
 AliITSspdLayer1Coverage.C:61
 AliITSspdLayer1Coverage.C:62
 AliITSspdLayer1Coverage.C:63
 AliITSspdLayer1Coverage.C:64
 AliITSspdLayer1Coverage.C:65
 AliITSspdLayer1Coverage.C:66
 AliITSspdLayer1Coverage.C:67
 AliITSspdLayer1Coverage.C:68
 AliITSspdLayer1Coverage.C:69
 AliITSspdLayer1Coverage.C:70
 AliITSspdLayer1Coverage.C:71
 AliITSspdLayer1Coverage.C:72
 AliITSspdLayer1Coverage.C:73
 AliITSspdLayer1Coverage.C:74
 AliITSspdLayer1Coverage.C:75
 AliITSspdLayer1Coverage.C:76
 AliITSspdLayer1Coverage.C:77
 AliITSspdLayer1Coverage.C:78
 AliITSspdLayer1Coverage.C:79
 AliITSspdLayer1Coverage.C:80
 AliITSspdLayer1Coverage.C:81
 AliITSspdLayer1Coverage.C:82
 AliITSspdLayer1Coverage.C:83
 AliITSspdLayer1Coverage.C:84
 AliITSspdLayer1Coverage.C:85
 AliITSspdLayer1Coverage.C:86
 AliITSspdLayer1Coverage.C:87
 AliITSspdLayer1Coverage.C:88
 AliITSspdLayer1Coverage.C:89
 AliITSspdLayer1Coverage.C:90
 AliITSspdLayer1Coverage.C:91
 AliITSspdLayer1Coverage.C:92
 AliITSspdLayer1Coverage.C:93
 AliITSspdLayer1Coverage.C:94
 AliITSspdLayer1Coverage.C:95
 AliITSspdLayer1Coverage.C:96
 AliITSspdLayer1Coverage.C:97
 AliITSspdLayer1Coverage.C:98
 AliITSspdLayer1Coverage.C:99
 AliITSspdLayer1Coverage.C:100
 AliITSspdLayer1Coverage.C:101
 AliITSspdLayer1Coverage.C:102
 AliITSspdLayer1Coverage.C:103
 AliITSspdLayer1Coverage.C:104
 AliITSspdLayer1Coverage.C:105
 AliITSspdLayer1Coverage.C:106
 AliITSspdLayer1Coverage.C:107
 AliITSspdLayer1Coverage.C:108
 AliITSspdLayer1Coverage.C:109
 AliITSspdLayer1Coverage.C:110
 AliITSspdLayer1Coverage.C:111
 AliITSspdLayer1Coverage.C:112
 AliITSspdLayer1Coverage.C:113
 AliITSspdLayer1Coverage.C:114
 AliITSspdLayer1Coverage.C:115
 AliITSspdLayer1Coverage.C:116
 AliITSspdLayer1Coverage.C:117
 AliITSspdLayer1Coverage.C:118
 AliITSspdLayer1Coverage.C:119
 AliITSspdLayer1Coverage.C:120
 AliITSspdLayer1Coverage.C:121
 AliITSspdLayer1Coverage.C:122
 AliITSspdLayer1Coverage.C:123
 AliITSspdLayer1Coverage.C:124
 AliITSspdLayer1Coverage.C:125
 AliITSspdLayer1Coverage.C:126
 AliITSspdLayer1Coverage.C:127
 AliITSspdLayer1Coverage.C:128
 AliITSspdLayer1Coverage.C:129
 AliITSspdLayer1Coverage.C:130
 AliITSspdLayer1Coverage.C:131
 AliITSspdLayer1Coverage.C:132
 AliITSspdLayer1Coverage.C:133
 AliITSspdLayer1Coverage.C:134
 AliITSspdLayer1Coverage.C:135
 AliITSspdLayer1Coverage.C:136
 AliITSspdLayer1Coverage.C:137
 AliITSspdLayer1Coverage.C:138