ROOT logo
void analHits (const char *filename="galice.root",Int_t evNumber=0, char *opt="Liny"){
/////////////////////////////////////////////////////////////////////////
//   This macro is a small example of a ROOT macro
//   illustrating how to read the output of GALICE
//   and fill some histograms.
//   
//     Root > .L analHits.C               //this loads the macro in memory
//     Root > analHits();                 //by default process first event   
//     Root > analHits("galice2.root",2); //process third event from 
//                                          galice2.root file.
//End_Html
/////////////////////////////////////////////////////////////////////////
  if(gAlice){
    delete gAlice;
    gAlice=0;
  }
  else{
    // Dynamically link some shared libs
    if(gClassTable->GetID("AliRun") < 0) {
      gROOT->LoadMacro("loadlibs.C");
      loadlibs();
    } // end if
  }
// Connect the Root Galice file containing Geometry, Kine and Hits
    TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
    if(!file) file = new TFile(filename);

// Get AliRun object from file or create it if not on file
    if(!gAlice) {
	gAlice = (AliRun*)file->Get("gAlice");
	if(gAlice) printf("AliRun object found on file\n");
	if(!gAlice) gAlice = new AliRun("gAlice","Alice test program");
    } // end if !gAlice
      
// Set event pointer to this event
    Int_t nparticles = gAlice->GetEvent(evNumber);
    if (nparticles <= 0){
	cout << "No particles found for event " << evNumber;
	cout << " in file " << filename << endl;
	return;
    } // end if nparticles <=0

// Pointer to specific detector hits.
    AliFMDhit    *fmdHit;
    AliITShit    *itsHit;
    AliMUONHit   *muonHit;
    AliPHOSHit   *phosHit;
    AliPMDhit    *pmdHit;
    AliHMPIDHit   *richHit;
    AliT0hit  *startHit;
    AliTOFhit    *tofHit;
    AliTPChit    *tpcHit;
    AliTPCTrackHits *tpc2Hit;
    AliTRDhit    *trdHit;
    AliCASTORhit *castorHit;
    AliZDCHit    *zdcHit;
    AliEMCALHit  *emcalHit;

// Get pointers to ALL Alice detectors and Hits containers
    AliFMD    *FMD    = (AliFMD*)    gAlice->GetDetector("FMD");
    AliITS    *ITS    = (AliITS*)    gAlice->GetDetector("ITS");
    AliMUON   *MUON   = (AliMUON*)   gAlice->GetDetector("MUON");
    AliPHOS   *PHOS   = (AliPHOS*)   gAlice->GetDetector("PHOS");
    AliPMD    *PMD    = (AliPMD*)    gAlice->GetDetector("PMD");
    AliHMPID   *HMPID   = (AliHMPID*)   gAlice->GetDetector("HMPID");
    AliT0  *T0  = (AliT0*)  gAlice->GetDetector("T0");
    AliTOF    *TOF    = (AliTOF*)    gAlice->GetDetector("TOF");
    AliTPC    *TPC    = (AliTPC*)    gAlice->GetDetector("TPC");
    AliTPC    *TPC    = (AliTPC*)    gAlice->GetDetector("TPC");
    AliTRD    *TRD    = (AliTRD*)    gAlice->GetDetector("TRD");
    AliCASTOR *CASTOR = (AliCASTOR*) gAlice->GetDetector("CASTOR");
    AliZDC    *ZDC    = (AliZDC*)    gAlice->GetDetector("ZDC");
    AliEMCAL  *EMCAL  = (AliEMCAL*)  gAlice->GetDetector("EMCAL");

// Get pointer to the particles
//    TClonesArray *Particles = gAlice->Particles();
//    TParticle    *part;

    // Create histograms
    if(FMD)   TH1F *hFMD   = new TH1F("hFMD"   ,"Hit Radius",100,0.,100.);
    if(ITS)   TH1F *hITS   = new TH1F("hITS"   ,"Ionization",100,0.,3.e-3);
    if(MUON)  TH1F *hMUON  = new TH1F("hMUON"  ,"Hit Radius",100,0.,500.);
    if(PHOS)   TH1F *hPHOS  = new TH1F("hPHOS"  ,"Energy Dep.",100,0.,0.5);
    if(PMD)     TH1F *hPMD   = new TH1F("hPMD"   ,"Energy Dep.",100,0.,1.e+5);
    if(HMPID)  TH1F *hHMPID  = new TH1F("hHMPID"  ,"Energy loss",100,0.,1.e-5);
    if(T0) TH1F *hT0 = new TH1F("hT0" ,"Time of Flight",100,0.,10.);
    if(TOF)   TH1F *hTOF   = new TH1F("hTOF"   ,"Time of Flight",100,0.,1.e-5);
    if(TPC)   TH1F *hTPC   = new TH1F("hTPC"   ,"Charge",100,0.,70.2);
    if(TRD)   TH1F *hTRD   = new TH1F("hTRD"   ,"Charge",100,0.,10.);
    if(CASTOR)TH1F *hCASTOR= new TH1F("hCASTOR","Hit Radius",100,0.,10.);
    if(ZDC)   TH1F *hZDC   = new TH1F("hZDC"   ,"Energy",100,0.,5.);
    if(EMCAL) TH1F *hEMCAL = new TH1F("hEMCAL" ,"Energy",100,0.,2.);
//    TH1F *hTPAR  = new TH1F("hTPAR" ,"?",6,1,7);  
    Int_t track,ntracks = gAlice->TreeH()->GetEntries();
// Start loop on tracks in the hits containers
    for(track=0; track<ntracks;track++){
      //MI change
      gAlice->ResetHits();
      gAlice->TreeH()->GetEvent(track);
      if(FMD){
	    for(fmdHit=(AliFMDhit*)FMD->FirstHit(-1);fmdHit;
		fmdHit=(AliFMDhit*)FMD->NextHit()){
		hFMD->Fill(TMath::Hypot(fmdHit->X(),fmdHit->Y()));
	    } // end for fmdHit
	} // end if FMD
	if(ITS){
	    for(itsHit=(AliITShit*)ITS->FirstHit(-1);itsHit;
		itsHit=(AliITShit*)ITS->NextHit()){
		if(itsHit->GetIonization()>0.0){//only after a step in the ITS
		    hITS->Fill(itsHit->GetIonization());
		} // end if
	    } // end for itsHit
	} // end if ITS
	if(MUON){
	    for(muonHit=(AliMUONHit*)MUON->FirstHit(-1);muonHit;
		muonHit=(AliMUONHit*)MUON->NextHit()){
		hMUON->Fill(TMath::Hypot(muonHit->X(),muonHit->Y()));
	    } // end for muonHit
	} // end if MUON
	if(PHOS){
	    for(phosHit=(AliPHOSHit*)PHOS->FirstHit(-1);phosHit;
		phosHit=(AliPHOSHit*)PHOS->NextHit()){
		hPHOS->Fill(phosHit->GetEnergy());
	    } // end for phosHit
	} // end if PHOS
	if(PMD){
	    for(pmdHit=(AliPMDhit*)PMD->FirstHit(-1);pmdHit;
		pmdHit=(AliPMDhit*)PMD->NextHit()){
		hPMD->Fill(pmdHit->GetEnergy());
	    } // end for pmdHit
	} // end if PMD
	if(HMPID){
	    for(richHit=(AliHMPIDHit*)HMPID->FirstHit(-1);richHit;
		richHit=(AliHMPIDHit*)HMPID->NextHit()){
		hHMPID->Fill(richHit->fEloss);
	    } // end for richHit
	} // end if HMPID
	if(T0){
	    for(startHit=(AliT0hit*)T0->FirstHit(-1);startHit;
		startHit=(AliT0hit*)T0->NextHit()){
		hT0->Fill(startHit->fTime);
	    } // end for startHit
	} // end if T0
	if(TOF){
	    for(tofHit=(AliTOFhit*)TOF->FirstHit(-1);tofHit;
		tofHit=(AliTOFhit*)TOF->NextHit()){
		hTOF->Fill(tofHit->GetTof());
	    } // end for tofHit
	} // end if TOF

	if(TRD) {
	    for(trdHit=(AliTRDhit*)TRD->FirstHit(-1);trdHit;
		trdHit=(AliTRDhit*)TRD->NextHit()) {
		hTRD->Fill((Float_t)(trdHit->GetCharge()));
	    } // end for
	} // end if TRD
	if(CASTOR) {
	    for(castorHit=(AliCASTORhit*)CASTOR->FirstHit(-1);castorHit;
		castorHit=(AliCASTORhit*)CASTOR->NextHit()) {
		hCASTOR->Fill(TMath::Hypot(castorHit->X(),castorHit->Y()));
	    } // end for
	} // end if CASTOR
	if(ZDC){
	    for(zdcHit=(AliZDCHit*)ZDC->FirstHit(-1);zdcHit;
		zdcHit=(AliZDCHit*)ZDC->NextHit()){
		hZDC->Fill(zdcHit->GetEnergy());
	    } // end for zdcdHit
	} // end if ZDC
	if(TPC) {	 
	  for(tpcHit=(AliTPChit*)TPC->FirstHit(-1);tpcHit;
	      tpcHit=(AliTPChit*)TPC->NextHit()) {
	    hTPC->Fill((Float_t)(tpcHit->fQ));
	  } // end for tpcHit
	} // end if TPC
	if(EMCAL) {
	  for(emcalHit=(AliEMCALHit*)EMCAL->FirstHit(-1);emcalHit;
	      emcalHit=(AliEMCALHit*)EMCAL->NextHit()) {
	    hEMCAL->Fill((Float_t)(emcalHit->GetEnergy()));
	  } // end for tpcHit
	} // end if TPC

    } // end for track

//Create a canvas, set the view range, show histograms
    TCanvas *c0 = new TCanvas("c0","Alice Detectors",400,10,600,700);
    if(opt=="Logy")c0->SetLogy();
    if(FMD){
	hFMD->SetFillColor(42);
	hFMD->Draw();
	c0->Print("analHitsFMD.ps");
    } // end if FMD
    if(ITS){
	hITS->SetFillColor(42);
	hITS->Draw();
	c0->SaveAs("analHitsITS.ps");
    } // end if ITS
    if(MUON){
	hMUON->SetFillColor(42);
	hMUON->Draw();
	c0->SaveAs("analHitsMUON.ps");
    } // end if MUON
    if(PHOS){
	hPHOS->SetFillColor(42);
	hPHOS->Draw();
	c0->SaveAs("analHitsPHOS.ps");
    } // end if PHOS
    if(PMD){
	hPMD->SetFillColor(42);
	hPMD->Draw();
	c0->SaveAs("analHitsPMD.ps");
    } // end if PMD
    if(HMPID){
	hHMPID->SetFillColor(42);
	hHMPID->Draw();
	c0->SaveAs("analHitsHMPID.ps");
    } // end if HMPID
    if(T0){
	hT0->SetFillColor(42);
	hT0->Draw();
	c0->SaveAs("analHitsT0.ps");
    } // end if T0
    if(TOF){
	hTOF->SetFillColor(42);
	hTOF->Draw();
	c0->SaveAs("analHitsTOF.ps");
    } // end if TOF
    if(TPC){
	hTPC->SetFillColor(42);
	hTPC->Draw();
	c0->SaveAs("analHitsTPC.ps");
    } // end if TPC
    if(TRD){
	hTRD->SetFillColor(42);
	hTRD->Draw();
	c0->SaveAs("analHitsTRD.ps");
    } // end if TRD
    if(CASTOR){
	hCASTOR->SetFillColor(42);
	hCASTOR->Draw();
	c0->SaveAs("analHitsCASTOR.ps");
    } // end if TRD
    if(ZDC){
	hZDC->SetFillColor(42);
	hZDC->Draw();
	c0->SaveAs("analHitsZDC.ps");
    } // end if ZDC
    if(EMCAL){
	hEMCAL->SetFillColor(42);
	hEMCAL->Draw();
	c0->SaveAs("analHitsEMCAL.ps");
    } // end if ZDC

// Clean Up
    /*
    if(FMD)    delete hFMD;
    if(ITS)    delete hITS;
    if(MUON)   delete hMUON;
    if(PHOS)   delete hPHOS;
    if(PMD)    delete hPMD;
    if(HMPID)   delete hHMPID;
    if(T0)  delete hT0;
    if(TOF)    delete hTOF;
    if(TPC)    delete hTPC;
    if(TRD)    delete hTRD;
    if(CASTOR) delete hCASTOR;
    if(ZDC)    delete hZDC;
    */
}
 analHits.C:1
 analHits.C:2
 analHits.C:3
 analHits.C:4
 analHits.C:5
 analHits.C:6
 analHits.C:7
 analHits.C:8
 analHits.C:9
 analHits.C:10
 analHits.C:11
 analHits.C:12
 analHits.C:13
 analHits.C:14
 analHits.C:15
 analHits.C:16
 analHits.C:17
 analHits.C:18
 analHits.C:19
 analHits.C:20
 analHits.C:21
 analHits.C:22
 analHits.C:23
 analHits.C:24
 analHits.C:25
 analHits.C:26
 analHits.C:27
 analHits.C:28
 analHits.C:29
 analHits.C:30
 analHits.C:31
 analHits.C:32
 analHits.C:33
 analHits.C:34
 analHits.C:35
 analHits.C:36
 analHits.C:37
 analHits.C:38
 analHits.C:39
 analHits.C:40
 analHits.C:41
 analHits.C:42
 analHits.C:43
 analHits.C:44
 analHits.C:45
 analHits.C:46
 analHits.C:47
 analHits.C:48
 analHits.C:49
 analHits.C:50
 analHits.C:51
 analHits.C:52
 analHits.C:53
 analHits.C:54
 analHits.C:55
 analHits.C:56
 analHits.C:57
 analHits.C:58
 analHits.C:59
 analHits.C:60
 analHits.C:61
 analHits.C:62
 analHits.C:63
 analHits.C:64
 analHits.C:65
 analHits.C:66
 analHits.C:67
 analHits.C:68
 analHits.C:69
 analHits.C:70
 analHits.C:71
 analHits.C:72
 analHits.C:73
 analHits.C:74
 analHits.C:75
 analHits.C:76
 analHits.C:77
 analHits.C:78
 analHits.C:79
 analHits.C:80
 analHits.C:81
 analHits.C:82
 analHits.C:83
 analHits.C:84
 analHits.C:85
 analHits.C:86
 analHits.C:87
 analHits.C:88
 analHits.C:89
 analHits.C:90
 analHits.C:91
 analHits.C:92
 analHits.C:93
 analHits.C:94
 analHits.C:95
 analHits.C:96
 analHits.C:97
 analHits.C:98
 analHits.C:99
 analHits.C:100
 analHits.C:101
 analHits.C:102
 analHits.C:103
 analHits.C:104
 analHits.C:105
 analHits.C:106
 analHits.C:107
 analHits.C:108
 analHits.C:109
 analHits.C:110
 analHits.C:111
 analHits.C:112
 analHits.C:113
 analHits.C:114
 analHits.C:115
 analHits.C:116
 analHits.C:117
 analHits.C:118
 analHits.C:119
 analHits.C:120
 analHits.C:121
 analHits.C:122
 analHits.C:123
 analHits.C:124
 analHits.C:125
 analHits.C:126
 analHits.C:127
 analHits.C:128
 analHits.C:129
 analHits.C:130
 analHits.C:131
 analHits.C:132
 analHits.C:133
 analHits.C:134
 analHits.C:135
 analHits.C:136
 analHits.C:137
 analHits.C:138
 analHits.C:139
 analHits.C:140
 analHits.C:141
 analHits.C:142
 analHits.C:143
 analHits.C:144
 analHits.C:145
 analHits.C:146
 analHits.C:147
 analHits.C:148
 analHits.C:149
 analHits.C:150
 analHits.C:151
 analHits.C:152
 analHits.C:153
 analHits.C:154
 analHits.C:155
 analHits.C:156
 analHits.C:157
 analHits.C:158
 analHits.C:159
 analHits.C:160
 analHits.C:161
 analHits.C:162
 analHits.C:163
 analHits.C:164
 analHits.C:165
 analHits.C:166
 analHits.C:167
 analHits.C:168
 analHits.C:169
 analHits.C:170
 analHits.C:171
 analHits.C:172
 analHits.C:173
 analHits.C:174
 analHits.C:175
 analHits.C:176
 analHits.C:177
 analHits.C:178
 analHits.C:179
 analHits.C:180
 analHits.C:181
 analHits.C:182
 analHits.C:183
 analHits.C:184
 analHits.C:185
 analHits.C:186
 analHits.C:187
 analHits.C:188
 analHits.C:189
 analHits.C:190
 analHits.C:191
 analHits.C:192
 analHits.C:193
 analHits.C:194
 analHits.C:195
 analHits.C:196
 analHits.C:197
 analHits.C:198
 analHits.C:199
 analHits.C:200
 analHits.C:201
 analHits.C:202
 analHits.C:203
 analHits.C:204
 analHits.C:205
 analHits.C:206
 analHits.C:207
 analHits.C:208
 analHits.C:209
 analHits.C:210
 analHits.C:211
 analHits.C:212
 analHits.C:213
 analHits.C:214
 analHits.C:215
 analHits.C:216
 analHits.C:217
 analHits.C:218
 analHits.C:219
 analHits.C:220
 analHits.C:221
 analHits.C:222
 analHits.C:223
 analHits.C:224
 analHits.C:225
 analHits.C:226
 analHits.C:227
 analHits.C:228
 analHits.C:229
 analHits.C:230
 analHits.C:231
 analHits.C:232
 analHits.C:233
 analHits.C:234
 analHits.C:235
 analHits.C:236
 analHits.C:237
 analHits.C:238
 analHits.C:239
 analHits.C:240
 analHits.C:241
 analHits.C:242
 analHits.C:243
 analHits.C:244
 analHits.C:245
 analHits.C:246
 analHits.C:247
 analHits.C:248
 analHits.C:249
 analHits.C:250
 analHits.C:251
 analHits.C:252
 analHits.C:253
 analHits.C:254
 analHits.C:255
 analHits.C:256
 analHits.C:257
 analHits.C:258
 analHits.C:259
 analHits.C:260
 analHits.C:261
 analHits.C:262
 analHits.C:263
 analHits.C:264
 analHits.C:265
 analHits.C:266
 analHits.C:267
 analHits.C:268
 analHits.C:269
 analHits.C:270
 analHits.C:271
 analHits.C:272
 analHits.C:273