Int_t AliTOFSDigits2Digits(Int_t numberOfEvents = 0) {
/////////////////////////////////////////////////////////////////////////
//
// Creates TOF digits from the summable digits for all event in the header file
//
// Use case:
// start root
// // load the macro
// root[0] .L AliTOFSDigits2Digits.C
// root[1] AliTOFSDigits2Digits()
//
// By default, it creates digits for all the events in the header file.
//
// If you want create digits only the firts event
// you can use the following lines:
//
// root[0] .L AliTOFSDigits2Digits.C
// root[1] AliTOFSDigits2Digits(1)
//
// Created by: F. Pierella
// Updated to the new I/O: I.Belikov (Jouri.Belikov@cern.ch)
//
// Report problems to decaro@sa.infn.it
//
/////////////////////////////////////////////////////////////////////////
Int_t rc = 0;
if (gAlice)
{
delete AliRunLoader::Instance();
delete gAlice;
gAlice = 0x0;
}
AliRunLoader* rl = AliRunLoader::Open("galice.root");
if (rl == 0x0)
{
cerr<<"Can not open session"<<endl;
rc = 1;
return rc;
}
if (rl->LoadgAlice())
{
cerr<<"Error occured while loading gAlice \n";
rc = 2;
return rc;
}
AliLoader *tofl = rl->GetLoader("TOFLoader");
if (tofl == 0x0)
{
cerr<<"Can not get the TOF Loader \n";
rc = 3;
return rc;
}
gAlice=rl->GetAliRun();
if (!gAlice)
{
cerr<<"Can't get gAlice !\n";
rc = 4;
return rc;
}
tofl->LoadSDigits("read");
tofl->LoadDigits("recreate");
Int_t totndig=0; // total number of digits
Int_t tottracks=0; // total number of tracks contributing to totndig
if (numberOfEvents==0) numberOfEvents=rl->GetNumberOfEvents();
TClonesArray *fSDigits=new TClonesArray("AliTOFSDigit", 1000);
TClonesArray *fDigits =new TClonesArray("AliTOFdigit", 1000);
TClonesArray &da=*fDigits;
for (Int_t ievent = 0; ievent < numberOfEvents; ievent++) {
rl->GetEvent(ievent);
TTree *sTree=tofl->TreeS();
if (sTree == 0)
{
cerr<<"Can't get the sdigit tree !\n";
rc = 5;
return rc;
}
TBranch *branch=sTree->GetBranch("TOF");
if (!branch)
{
cerr<<"Cant' get the branch !\n";
rc = 6;
return rc;
}
branch->SetAddress(&fSDigits);
TTree *dTree=tofl->TreeD();
if (dTree == 0) {
tofl->MakeTree("D");
dTree=tofl->TreeD();
}
branch=dTree->GetBranch("TOF");
if (!branch) dTree->Branch("TOF",&fDigits);
else branch->SetAddress(&fDigits);
Int_t nEntries = sTree->GetEntries();
for (Int_t iEntry = 0; iEntry < nEntries; iEntry++) {
sTree->GetEvent(iEntry);
Int_t ndig = fSDigits->GetEntriesFast();
cout << "----------------<AliTOFSDigits2Digits>---------------- \n";
cout << "Found " << ndig << " TOF SDigits for event " << ievent << endl;
cout << "------------------------------------------------------ \n";
for (Int_t k = 0; k < ndig; k++) {
Int_t vol[5]; // location for a digit
// Get the information for this digit
AliTOFSDigit *tofsdigit = (AliTOFSDigit *)fSDigits->UncheckedAt(k);
Int_t nslot=tofsdigit->GetNDigits(); // get the number of slots
// for current sdigit
// TOF sdigit volumes (always the same for all slots)
Int_t sector = tofsdigit->GetSector(); // range [0-17]
Int_t plate = tofsdigit->GetPlate(); // range [0- 4]
Int_t strip = tofsdigit->GetStrip(); // range [0-19]
Int_t padz = tofsdigit->GetPadz(); // range [0- 1]
Int_t padx = tofsdigit->GetPadx(); // range [0-47]
vol[0] = sector;
vol[1] = plate;
vol[2] = strip;
vol[3] = padx;
vol[4] = padz;
//--------------------- QA section ----------------------
// in the while, I perform QA
Bool_t isSDigitBad = (sector<0 || sector>17 ||
plate<0 || plate >4 ||
padz<0 || padz>1 ||
padx<0 || padx>47);
if (isSDigitBad)
{
cout << "<AliTOFSDigits2Digits> strange sdigit found \n";
rc = 7;
return rc;
}
//-------------------------------------------------------
// start loop on number of slots for current sdigit
for (Int_t islot = 0; islot < nslot; islot++) {
Float_t digit[2]; // TOF digit variables
const Int_t kMAXDIGITS = 3; // number 3 is a legacy from AliDigit object
Int_t tracknum[kMAXDIGITS]; //contributing tracks for the current slot
Float_t tdc=tofsdigit->GetTdc(islot); digit[0]=tdc;
Float_t adc=tofsdigit->GetAdc(islot); digit[1]=adc;
tracknum[0]=tofsdigit->GetTrack(islot,0);
tracknum[1]=tofsdigit->GetTrack(islot,1);
tracknum[2]=tofsdigit->GetTrack(islot,2);
for (Int_t i = 0; i < kMAXDIGITS; i++) {
tottracks++;
// search for the first empty location
if(tracknum[i]==-1){
tottracks--;
break;
}
}
// adding a TOF digit for each slot
{
Int_t ndigits=da.GetEntriesFast();
new (da[ndigits]) AliTOFdigit(tracknum, vol, digit);
}
totndig++;
}
} // end loop on sdigits
fSDigits->Clear();
} // end loop on entries
dTree->Fill();
tofl->WriteDigits("OVERWRITE");
// free used memory
fDigits->Clear();
} // end loop on events
delete fSDigits;
delete fDigits;
tofl->UnloadDigits();
tofl->UnloadSDigits();
rl->UnloadHeader();
rl->UnloadgAlice();
cout << "---------------------------------------------------------- \n";
cout << "<AliTOFSDigits2Digits> Summary \n";
cout << "contributing tracks to " << totndig << " digits: " << tottracks << endl;
cout << "---------------------------------------------------------- \n";
if (gAlice)
{
delete AliRunLoader::Instance();
delete gAlice;
gAlice = 0x0;
}
return rc;
}
AliTOFSDigits2Digits.C:10 AliTOFSDigits2Digits.C:11 AliTOFSDigits2Digits.C:12 AliTOFSDigits2Digits.C:13 AliTOFSDigits2Digits.C:14 AliTOFSDigits2Digits.C:15 AliTOFSDigits2Digits.C:16 AliTOFSDigits2Digits.C:17 AliTOFSDigits2Digits.C:18 AliTOFSDigits2Digits.C:19 AliTOFSDigits2Digits.C:20 AliTOFSDigits2Digits.C:21 AliTOFSDigits2Digits.C:22 AliTOFSDigits2Digits.C:23 AliTOFSDigits2Digits.C:24 AliTOFSDigits2Digits.C:25 AliTOFSDigits2Digits.C:26 AliTOFSDigits2Digits.C:27 AliTOFSDigits2Digits.C:28 AliTOFSDigits2Digits.C:29 AliTOFSDigits2Digits.C:30 AliTOFSDigits2Digits.C:31 AliTOFSDigits2Digits.C:32 AliTOFSDigits2Digits.C:33 AliTOFSDigits2Digits.C:34 AliTOFSDigits2Digits.C:35 AliTOFSDigits2Digits.C:36 AliTOFSDigits2Digits.C:37 AliTOFSDigits2Digits.C:38 AliTOFSDigits2Digits.C:39 AliTOFSDigits2Digits.C:40 AliTOFSDigits2Digits.C:41 AliTOFSDigits2Digits.C:42 AliTOFSDigits2Digits.C:43 AliTOFSDigits2Digits.C:44 AliTOFSDigits2Digits.C:45 AliTOFSDigits2Digits.C:46 AliTOFSDigits2Digits.C:47 AliTOFSDigits2Digits.C:48 AliTOFSDigits2Digits.C:49 AliTOFSDigits2Digits.C:50 AliTOFSDigits2Digits.C:51 AliTOFSDigits2Digits.C:52 AliTOFSDigits2Digits.C:53 AliTOFSDigits2Digits.C:54 AliTOFSDigits2Digits.C:55 AliTOFSDigits2Digits.C:56 AliTOFSDigits2Digits.C:57 AliTOFSDigits2Digits.C:58 AliTOFSDigits2Digits.C:59 AliTOFSDigits2Digits.C:60 AliTOFSDigits2Digits.C:61 AliTOFSDigits2Digits.C:62 AliTOFSDigits2Digits.C:63 AliTOFSDigits2Digits.C:64 AliTOFSDigits2Digits.C:65 AliTOFSDigits2Digits.C:66 AliTOFSDigits2Digits.C:67 AliTOFSDigits2Digits.C:68 AliTOFSDigits2Digits.C:69 AliTOFSDigits2Digits.C:70 AliTOFSDigits2Digits.C:71 AliTOFSDigits2Digits.C:72 AliTOFSDigits2Digits.C:73 AliTOFSDigits2Digits.C:74 AliTOFSDigits2Digits.C:75 AliTOFSDigits2Digits.C:76 AliTOFSDigits2Digits.C:77 AliTOFSDigits2Digits.C:78 AliTOFSDigits2Digits.C:79 AliTOFSDigits2Digits.C:80 AliTOFSDigits2Digits.C:81 AliTOFSDigits2Digits.C:82 AliTOFSDigits2Digits.C:83 AliTOFSDigits2Digits.C:84 AliTOFSDigits2Digits.C:85 AliTOFSDigits2Digits.C:86 AliTOFSDigits2Digits.C:87 AliTOFSDigits2Digits.C:88 AliTOFSDigits2Digits.C:89 AliTOFSDigits2Digits.C:90 AliTOFSDigits2Digits.C:91 AliTOFSDigits2Digits.C:92 AliTOFSDigits2Digits.C:93 AliTOFSDigits2Digits.C:94 AliTOFSDigits2Digits.C:95 AliTOFSDigits2Digits.C:96 AliTOFSDigits2Digits.C:97 AliTOFSDigits2Digits.C:98 AliTOFSDigits2Digits.C:99 AliTOFSDigits2Digits.C:100 AliTOFSDigits2Digits.C:101 AliTOFSDigits2Digits.C:102 AliTOFSDigits2Digits.C:103 AliTOFSDigits2Digits.C:104 AliTOFSDigits2Digits.C:105 AliTOFSDigits2Digits.C:106 AliTOFSDigits2Digits.C:107 AliTOFSDigits2Digits.C:108 AliTOFSDigits2Digits.C:109 AliTOFSDigits2Digits.C:110 AliTOFSDigits2Digits.C:111 AliTOFSDigits2Digits.C:112 AliTOFSDigits2Digits.C:113 AliTOFSDigits2Digits.C:114 AliTOFSDigits2Digits.C:115 AliTOFSDigits2Digits.C:116 AliTOFSDigits2Digits.C:117 AliTOFSDigits2Digits.C:118 AliTOFSDigits2Digits.C:119 AliTOFSDigits2Digits.C:120 AliTOFSDigits2Digits.C:121 AliTOFSDigits2Digits.C:122 AliTOFSDigits2Digits.C:123 AliTOFSDigits2Digits.C:124 AliTOFSDigits2Digits.C:125 AliTOFSDigits2Digits.C:126 AliTOFSDigits2Digits.C:127 AliTOFSDigits2Digits.C:128 AliTOFSDigits2Digits.C:129 AliTOFSDigits2Digits.C:130 AliTOFSDigits2Digits.C:131 AliTOFSDigits2Digits.C:132 AliTOFSDigits2Digits.C:133 AliTOFSDigits2Digits.C:134 AliTOFSDigits2Digits.C:135 AliTOFSDigits2Digits.C:136 AliTOFSDigits2Digits.C:137 AliTOFSDigits2Digits.C:138 AliTOFSDigits2Digits.C:139 AliTOFSDigits2Digits.C:140 AliTOFSDigits2Digits.C:141 AliTOFSDigits2Digits.C:142 AliTOFSDigits2Digits.C:143 AliTOFSDigits2Digits.C:144 AliTOFSDigits2Digits.C:145 AliTOFSDigits2Digits.C:146 AliTOFSDigits2Digits.C:147 AliTOFSDigits2Digits.C:148 AliTOFSDigits2Digits.C:149 AliTOFSDigits2Digits.C:150 AliTOFSDigits2Digits.C:151 AliTOFSDigits2Digits.C:152 AliTOFSDigits2Digits.C:153 AliTOFSDigits2Digits.C:154 AliTOFSDigits2Digits.C:155 AliTOFSDigits2Digits.C:156 AliTOFSDigits2Digits.C:157 AliTOFSDigits2Digits.C:158 AliTOFSDigits2Digits.C:159 AliTOFSDigits2Digits.C:160 AliTOFSDigits2Digits.C:161 AliTOFSDigits2Digits.C:162 AliTOFSDigits2Digits.C:163 AliTOFSDigits2Digits.C:164 AliTOFSDigits2Digits.C:165 AliTOFSDigits2Digits.C:166 AliTOFSDigits2Digits.C:167 AliTOFSDigits2Digits.C:168 AliTOFSDigits2Digits.C:169 AliTOFSDigits2Digits.C:170 AliTOFSDigits2Digits.C:171 AliTOFSDigits2Digits.C:172 AliTOFSDigits2Digits.C:173 AliTOFSDigits2Digits.C:174 AliTOFSDigits2Digits.C:175 AliTOFSDigits2Digits.C:176 AliTOFSDigits2Digits.C:177 AliTOFSDigits2Digits.C:178 AliTOFSDigits2Digits.C:179 AliTOFSDigits2Digits.C:180 AliTOFSDigits2Digits.C:181 AliTOFSDigits2Digits.C:182 AliTOFSDigits2Digits.C:183 AliTOFSDigits2Digits.C:184 AliTOFSDigits2Digits.C:185 AliTOFSDigits2Digits.C:186 AliTOFSDigits2Digits.C:187 AliTOFSDigits2Digits.C:188 AliTOFSDigits2Digits.C:189 AliTOFSDigits2Digits.C:190 AliTOFSDigits2Digits.C:191 AliTOFSDigits2Digits.C:192 AliTOFSDigits2Digits.C:193 AliTOFSDigits2Digits.C:194 AliTOFSDigits2Digits.C:195 AliTOFSDigits2Digits.C:196 AliTOFSDigits2Digits.C:197 AliTOFSDigits2Digits.C:198 AliTOFSDigits2Digits.C:199 AliTOFSDigits2Digits.C:200 AliTOFSDigits2Digits.C:201 AliTOFSDigits2Digits.C:202 AliTOFSDigits2Digits.C:203 AliTOFSDigits2Digits.C:204 AliTOFSDigits2Digits.C:205 AliTOFSDigits2Digits.C:206 AliTOFSDigits2Digits.C:207 AliTOFSDigits2Digits.C:208 AliTOFSDigits2Digits.C:209 AliTOFSDigits2Digits.C:210 AliTOFSDigits2Digits.C:211 AliTOFSDigits2Digits.C:212 AliTOFSDigits2Digits.C:213 AliTOFSDigits2Digits.C:214 AliTOFSDigits2Digits.C:215 AliTOFSDigits2Digits.C:216 AliTOFSDigits2Digits.C:217 AliTOFSDigits2Digits.C:218 AliTOFSDigits2Digits.C:219 AliTOFSDigits2Digits.C:220 AliTOFSDigits2Digits.C:221