ROOT logo
//
// This macro reads the Hits Tree
//
void AliPMDHitsRead(Int_t nevt = 1)
{
  
  TStopwatch timer;
  timer.Start();
  TH2F *h2 = new TH2F("h2"," Y vs. X",200,-100.,100.,200,-100.,100.); 
  //  FILE *fpw = fopen("alipmdhits.dat","w");

  AliRunLoader *fRunLoader = AliRunLoader::Open("galice.root");

  if (!fRunLoader)
   {
     printf("Can not open session for file ");
   }
  
  if (!fRunLoader->GetAliRun()) fRunLoader->LoadgAlice();
  if (!fRunLoader->TreeE()) fRunLoader->LoadHeader();
  if (!fRunLoader->TreeK()) fRunLoader->LoadKinematics();

  gAlice = fRunLoader->GetAliRun();
  
  if (gAlice)
    {
      printf("Alirun object found\n");
    }
  else
    {
      printf("Could not found Alirun object\n");
    }
  
  fPMD  = (AliPMD*)gAlice->GetDetector("PMD");

  fPMDLoader = fRunLoader->GetLoader("PMDLoader");

  if (fPMDLoader == 0x0)
    {
      printf("Can not find PMDLoader\n");
    }


  fPMDLoader->LoadHits("READ");

  // This reads the PMD Hits tree and assigns the right track number
  // to a cell and stores in the summable digits tree
  //

  const Int_t kPi0 = 111;
  const Int_t kGamma = 22;
  Int_t   npmd;
  Int_t   trackno;
  Int_t   smnumber;
  Int_t   trackpid;
  Int_t   mtrackno;
  Int_t   mtrackpid;
  Int_t   xpad = -1, ypad = -1;
  Float_t edep;
  Float_t vx = -999.0, vy = -999.0, vz = -999.0;
  Float_t xPos, yPos, zPos;
  Float_t xx, yy;

  AliPMDUtility cc;

  for (Int_t ievt = 0; ievt < nevt; ievt++)
    {

      printf("Event Number = %d\n",ievt);
      Int_t nparticles = fRunLoader->GetHeader()->GetNtrack();
      printf("Number of Particles = %d\n",nparticles);
      fRunLoader->GetEvent(ievt);
      // ------------------------------------------------------- //
      // Pointer to specific detector hits.
      // Get pointers to Alice detectors and Hits containers
      
      TTree* treeH = fPMDLoader->TreeH();
      
      Int_t ntracks    = (Int_t) treeH->GetEntries();
      printf("Number of Tracks in the TreeH = %d\n", ntracks);
      
      
      TClonesArray* hits = 0;
      if (fPMD) hits = fPMD->Hits();
      
      // Start loop on tracks in the hits containers
      
      for (Int_t track=0; track<ntracks;track++) 
	{
	  gAlice->GetMCApp()->ResetHits();
	  treeH->GetEvent(track);
	  if (fPMD) 
	    {
	      npmd = hits->GetEntriesFast();
	      for (int ipmd = 0; ipmd < npmd; ipmd++) 
		{
		  fPMDHit = (AliPMDhit*) hits->UncheckedAt(ipmd);
		  trackno = fPMDHit->GetTrack();

		  //fprintf(fpw,"trackno = %d\n",trackno);

		  //  get kinematics of the particles

		  TParticle* mparticle = gAlice->GetMCApp()->Particle(trackno);
		  trackpid  = mparticle->GetPdgCode();
		  
		  Int_t igatr = -999;
		  Int_t ichtr = -999;
		  Int_t igapid = -999;
		  Int_t imo;
		  Int_t igen = 0;
		  Int_t idmo = -999;
		  
		  Int_t tracknoOld=0, trackpidOld=0, statusOld = 0;
		  if (mparticle->GetFirstMother() == -1)
		    {
		      tracknoOld  = trackno;
		      trackpidOld = trackpid;
		      statusOld   = -1;
		      
		      vx = mparticle->Vx();
		      vy = mparticle->Vy();
		      vz = mparticle->Vz();

		      //fprintf(fpw,"==> Mother ID %5d %5d %5d Vertex: %13.3f %13.3f %13.3f\n", igen, -1, trackpid, vx, vy, vz);
		      
		    }
		  Int_t igstatus = 0;
		  while((imo = mparticle->GetFirstMother()) >= 0)
		    {
		      igen++;
		      
		      mparticle =  gAlice->GetMCApp()->Particle(imo);
		      idmo = mparticle->GetPdgCode();
		      
		      vx = mparticle->Vx();
		      vy = mparticle->Vy();
		      vz = mparticle->Vz();
		      
		      //printf("==> Mother ID %5d %5d %5d Vertex: %13.3f %13.3f %13.3f\n", igen, imo, idmo, vx, vy, vz);
		      //fprintf(fpw,"==> Mother ID %5d %5d %5d Vertex: %13.3f %13.3f %13.3f\n", igen, imo, idmo, vx, vy, vz);
		      
		      if ((idmo == kGamma || idmo == -11 || idmo == 11) && vx == 0. && vy == 0. && vz == 0.)
			{
			  igatr = imo;
			  igapid = idmo;
			  igstatus = 1;
			}
		      if(igstatus == 0)
			{
			  if (idmo == kPi0 && vx == 0. && vy == 0. && vz == 0.)
			    {
			      igatr = imo;
			      igapid = idmo;
			    }
			}
		      ichtr = imo;
		    } // end of while loop
		  
		  if (idmo == kPi0 && vx == 0. && vy == 0. && vz == 0.)
		    {
		      mtrackno = igatr;
		      mtrackpid = igapid;
		    }
		  else
		    {
		      mtrackno  = ichtr;
		      mtrackpid = idmo;
		    }
		  if (statusOld == -1)
		    {
		      mtrackno  = tracknoOld;
		      mtrackpid = trackpidOld;
		    }
		  
		  //printf("mtrackno = %d  mtrackpid = %d\n",mtrackno,mtrackpid);

		  xPos = fPMDHit->X();
		  yPos = fPMDHit->Y();
		  zPos = fPMDHit->Z();

		  Float_t time = fPMDHit->GetTime();
		  
		  printf("++++++++++ time = %f\n",time);

		  edep       = fPMDHit->GetEnergy();
		  Int_t vol1 = fPMDHit->GetVolume(1); // Column
		  Int_t vol2 = fPMDHit->GetVolume(2); // Row

		  Int_t vol3 = fPMDHit->GetVolume(4); // UnitModule

		  
		  // -----------------------------------------//
		  // For Super Module 1 & 2                   //
		  //  nrow = 96, ncol = 48                    //
		  // For Super Module 3 & 4                   //
		  //  nrow = 48, ncol = 96                    //
		  // -----------------------------------------//
		  
		  if (vol3 < 24)
		    {
		      smnumber = vol3;
		    }
		  else
		    {
		      smnumber = vol3 - 24;
		    }

		  xpad = vol1;
		  ypad = vol2;

		  if(zPos > 361.5)
		    {
		      cc.RectGeomCellPos(smnumber,xpad,ypad,xx,yy);
		      h2->Fill(xx,yy);
		    }
		  
		}
	    }
	} // Track Loop ended
      
    }

  h2->Draw();

  fRunLoader->UnloadgAlice();
  fRunLoader->UnloadHeader();
  fRunLoader->UnloadKinematics();
  fPMDLoader->UnloadHits();

  timer.Stop();
  timer.Print();

}
 AliPMDHitsRead.C:1
 AliPMDHitsRead.C:2
 AliPMDHitsRead.C:3
 AliPMDHitsRead.C:4
 AliPMDHitsRead.C:5
 AliPMDHitsRead.C:6
 AliPMDHitsRead.C:7
 AliPMDHitsRead.C:8
 AliPMDHitsRead.C:9
 AliPMDHitsRead.C:10
 AliPMDHitsRead.C:11
 AliPMDHitsRead.C:12
 AliPMDHitsRead.C:13
 AliPMDHitsRead.C:14
 AliPMDHitsRead.C:15
 AliPMDHitsRead.C:16
 AliPMDHitsRead.C:17
 AliPMDHitsRead.C:18
 AliPMDHitsRead.C:19
 AliPMDHitsRead.C:20
 AliPMDHitsRead.C:21
 AliPMDHitsRead.C:22
 AliPMDHitsRead.C:23
 AliPMDHitsRead.C:24
 AliPMDHitsRead.C:25
 AliPMDHitsRead.C:26
 AliPMDHitsRead.C:27
 AliPMDHitsRead.C:28
 AliPMDHitsRead.C:29
 AliPMDHitsRead.C:30
 AliPMDHitsRead.C:31
 AliPMDHitsRead.C:32
 AliPMDHitsRead.C:33
 AliPMDHitsRead.C:34
 AliPMDHitsRead.C:35
 AliPMDHitsRead.C:36
 AliPMDHitsRead.C:37
 AliPMDHitsRead.C:38
 AliPMDHitsRead.C:39
 AliPMDHitsRead.C:40
 AliPMDHitsRead.C:41
 AliPMDHitsRead.C:42
 AliPMDHitsRead.C:43
 AliPMDHitsRead.C:44
 AliPMDHitsRead.C:45
 AliPMDHitsRead.C:46
 AliPMDHitsRead.C:47
 AliPMDHitsRead.C:48
 AliPMDHitsRead.C:49
 AliPMDHitsRead.C:50
 AliPMDHitsRead.C:51
 AliPMDHitsRead.C:52
 AliPMDHitsRead.C:53
 AliPMDHitsRead.C:54
 AliPMDHitsRead.C:55
 AliPMDHitsRead.C:56
 AliPMDHitsRead.C:57
 AliPMDHitsRead.C:58
 AliPMDHitsRead.C:59
 AliPMDHitsRead.C:60
 AliPMDHitsRead.C:61
 AliPMDHitsRead.C:62
 AliPMDHitsRead.C:63
 AliPMDHitsRead.C:64
 AliPMDHitsRead.C:65
 AliPMDHitsRead.C:66
 AliPMDHitsRead.C:67
 AliPMDHitsRead.C:68
 AliPMDHitsRead.C:69
 AliPMDHitsRead.C:70
 AliPMDHitsRead.C:71
 AliPMDHitsRead.C:72
 AliPMDHitsRead.C:73
 AliPMDHitsRead.C:74
 AliPMDHitsRead.C:75
 AliPMDHitsRead.C:76
 AliPMDHitsRead.C:77
 AliPMDHitsRead.C:78
 AliPMDHitsRead.C:79
 AliPMDHitsRead.C:80
 AliPMDHitsRead.C:81
 AliPMDHitsRead.C:82
 AliPMDHitsRead.C:83
 AliPMDHitsRead.C:84
 AliPMDHitsRead.C:85
 AliPMDHitsRead.C:86
 AliPMDHitsRead.C:87
 AliPMDHitsRead.C:88
 AliPMDHitsRead.C:89
 AliPMDHitsRead.C:90
 AliPMDHitsRead.C:91
 AliPMDHitsRead.C:92
 AliPMDHitsRead.C:93
 AliPMDHitsRead.C:94
 AliPMDHitsRead.C:95
 AliPMDHitsRead.C:96
 AliPMDHitsRead.C:97
 AliPMDHitsRead.C:98
 AliPMDHitsRead.C:99
 AliPMDHitsRead.C:100
 AliPMDHitsRead.C:101
 AliPMDHitsRead.C:102
 AliPMDHitsRead.C:103
 AliPMDHitsRead.C:104
 AliPMDHitsRead.C:105
 AliPMDHitsRead.C:106
 AliPMDHitsRead.C:107
 AliPMDHitsRead.C:108
 AliPMDHitsRead.C:109
 AliPMDHitsRead.C:110
 AliPMDHitsRead.C:111
 AliPMDHitsRead.C:112
 AliPMDHitsRead.C:113
 AliPMDHitsRead.C:114
 AliPMDHitsRead.C:115
 AliPMDHitsRead.C:116
 AliPMDHitsRead.C:117
 AliPMDHitsRead.C:118
 AliPMDHitsRead.C:119
 AliPMDHitsRead.C:120
 AliPMDHitsRead.C:121
 AliPMDHitsRead.C:122
 AliPMDHitsRead.C:123
 AliPMDHitsRead.C:124
 AliPMDHitsRead.C:125
 AliPMDHitsRead.C:126
 AliPMDHitsRead.C:127
 AliPMDHitsRead.C:128
 AliPMDHitsRead.C:129
 AliPMDHitsRead.C:130
 AliPMDHitsRead.C:131
 AliPMDHitsRead.C:132
 AliPMDHitsRead.C:133
 AliPMDHitsRead.C:134
 AliPMDHitsRead.C:135
 AliPMDHitsRead.C:136
 AliPMDHitsRead.C:137
 AliPMDHitsRead.C:138
 AliPMDHitsRead.C:139
 AliPMDHitsRead.C:140
 AliPMDHitsRead.C:141
 AliPMDHitsRead.C:142
 AliPMDHitsRead.C:143
 AliPMDHitsRead.C:144
 AliPMDHitsRead.C:145
 AliPMDHitsRead.C:146
 AliPMDHitsRead.C:147
 AliPMDHitsRead.C:148
 AliPMDHitsRead.C:149
 AliPMDHitsRead.C:150
 AliPMDHitsRead.C:151
 AliPMDHitsRead.C:152
 AliPMDHitsRead.C:153
 AliPMDHitsRead.C:154
 AliPMDHitsRead.C:155
 AliPMDHitsRead.C:156
 AliPMDHitsRead.C:157
 AliPMDHitsRead.C:158
 AliPMDHitsRead.C:159
 AliPMDHitsRead.C:160
 AliPMDHitsRead.C:161
 AliPMDHitsRead.C:162
 AliPMDHitsRead.C:163
 AliPMDHitsRead.C:164
 AliPMDHitsRead.C:165
 AliPMDHitsRead.C:166
 AliPMDHitsRead.C:167
 AliPMDHitsRead.C:168
 AliPMDHitsRead.C:169
 AliPMDHitsRead.C:170
 AliPMDHitsRead.C:171
 AliPMDHitsRead.C:172
 AliPMDHitsRead.C:173
 AliPMDHitsRead.C:174
 AliPMDHitsRead.C:175
 AliPMDHitsRead.C:176
 AliPMDHitsRead.C:177
 AliPMDHitsRead.C:178
 AliPMDHitsRead.C:179
 AliPMDHitsRead.C:180
 AliPMDHitsRead.C:181
 AliPMDHitsRead.C:182
 AliPMDHitsRead.C:183
 AliPMDHitsRead.C:184
 AliPMDHitsRead.C:185
 AliPMDHitsRead.C:186
 AliPMDHitsRead.C:187
 AliPMDHitsRead.C:188
 AliPMDHitsRead.C:189
 AliPMDHitsRead.C:190
 AliPMDHitsRead.C:191
 AliPMDHitsRead.C:192
 AliPMDHitsRead.C:193
 AliPMDHitsRead.C:194
 AliPMDHitsRead.C:195
 AliPMDHitsRead.C:196
 AliPMDHitsRead.C:197
 AliPMDHitsRead.C:198
 AliPMDHitsRead.C:199
 AliPMDHitsRead.C:200
 AliPMDHitsRead.C:201
 AliPMDHitsRead.C:202
 AliPMDHitsRead.C:203
 AliPMDHitsRead.C:204
 AliPMDHitsRead.C:205
 AliPMDHitsRead.C:206
 AliPMDHitsRead.C:207
 AliPMDHitsRead.C:208
 AliPMDHitsRead.C:209
 AliPMDHitsRead.C:210
 AliPMDHitsRead.C:211
 AliPMDHitsRead.C:212
 AliPMDHitsRead.C:213
 AliPMDHitsRead.C:214
 AliPMDHitsRead.C:215
 AliPMDHitsRead.C:216
 AliPMDHitsRead.C:217
 AliPMDHitsRead.C:218
 AliPMDHitsRead.C:219
 AliPMDHitsRead.C:220
 AliPMDHitsRead.C:221
 AliPMDHitsRead.C:222
 AliPMDHitsRead.C:223
 AliPMDHitsRead.C:224
 AliPMDHitsRead.C:225
 AliPMDHitsRead.C:226
 AliPMDHitsRead.C:227
 AliPMDHitsRead.C:228
 AliPMDHitsRead.C:229
 AliPMDHitsRead.C:230
 AliPMDHitsRead.C:231
 AliPMDHitsRead.C:232
 AliPMDHitsRead.C:233
 AliPMDHitsRead.C:234
 AliPMDHitsRead.C:235