ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// ALICE Reconstruction parameterization:                                    //
//                                                                           //
//                                                                           //
// Base Class for Detector reconstruction parameters                         //
// Revision: cvetan.cheshkov@cern.ch 12/06/2008                              //
// Its structure has been revised and it is interfaced to AliEventInfo.      //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TClass.h"
#include "TObjArray.h"
#include "TMath.h"
#include "THashTable.h"
#include "TString.h"
#include "TRegexp.h"
#include "AliDetectorRecoParam.h"

#include "AliLog.h"
#include "AliRecoParam.h"
#include "AliRunInfo.h"
#include "AliEventInfo.h"
#include "AliLog.h"

ClassImp(AliRecoParam)

TString AliRecoParam::fkgEventSpecieName[] = {"Default", "LowMultiplicity", "HighMultiplicity", "Cosmic", "Calib", "Unknown"} ; 

AliRecoParam::AliRecoParam(): 
  TObject(),
  fEventSpecie(kDefault)
{
  // Default constructor
  // ...
  for(Int_t iDet = 0; iDet < kNDetectors; iDet++)
    fDetRecoParams[iDet] = NULL;
  for(Int_t iSpecie = 0; iSpecie < kNSpecies; iSpecie++) {
    for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      fDetRecoParamsIndex[iSpecie][iDet] = -1;
    }
  }
}

AliRecoParam::AliRecoParam(const AliRecoParam& par) :
  TObject(),
  fEventSpecie(par.fEventSpecie)
{
  // copy constructor
  for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (par.fDetRecoParams[iDet])
      fDetRecoParams[iDet] = (TObjArray*)(par.fDetRecoParams[iDet]->Clone());
    else
      fDetRecoParams[iDet] = NULL;
  }
  for(Int_t iSpecie = 0; iSpecie < kNSpecies; iSpecie++) {
    for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
      fDetRecoParamsIndex[iSpecie][iDet] = par.fDetRecoParamsIndex[iSpecie][iDet];
    }
  }
}

//_____________________________________________________________________________
AliRecoParam& AliRecoParam::operator = (const AliRecoParam& par)
{
  // assignment operator

  if(&par == this) return *this;

  this->~AliRecoParam();
  new(this) AliRecoParam(par);
  return *this;
}

AliRecoParam::~AliRecoParam(){
  // Destructor
  // ...
  // Delete the array with the reco-param objects
  for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (fDetRecoParams[iDet]){
      fDetRecoParams[iDet]->Delete();
      delete fDetRecoParams[iDet];
    }
  }
}

Int_t AliRecoParam::AConvert(EventSpecie_t es)
{
  //Converts EventSpecie_t  into int
  Int_t rv = -1 ; 
  switch (es) {
    case kDefault:
      rv = 0 ; 
      break;
    case kLowMult:
      rv = 1 ; 
      break;
    case kHighMult:
      rv = 2 ; 
      break;
    case kCosmic:
      rv = 3 ; 
      break;
    case kCalib:
      rv = 4 ; 
      break;
    default:
      break;
  }

  if (rv < 0) 
    AliFatalClass(Form("Wrong event specie conversion %d", es)) ; 

  return rv ;
}

AliRecoParam::EventSpecie_t AliRecoParam::Convert(Int_t ies)
{
  //Converts int into EventSpecie_t
  AliRecoParam::EventSpecie_t es = kDefault ; 
  if ( ies >> 1) 
    es = kLowMult ; 
  if ( ies >> 2) 
    es = kHighMult ;   
  if ( ies >> 3) 
    es = kCosmic ;   
  if ( ies >> 4) 
    es = kCalib ;

  return es ;   
}

AliRecoParam::EventSpecie_t AliRecoParam::ConvertIndex(Int_t index)
{
  //Converts index of lists into eventspecie
  EventSpecie_t es = kDefault ; 
  switch (index) {
    case 0:
      es = kDefault ; 
      break;
    case 1:
      es = kLowMult ; 
      break;
    case 2:
      es = kHighMult ;   
      break;
    case 3:
      es = kCosmic ;   
      break;
    case 4:
      es = kCalib ;
      break;
    default:
      break;
  }
  return es ;
}

void  AliRecoParam::Print(Option_t *option) const {
  //
  // Print reconstruction setup
  //
  for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
    if (fDetRecoParams[iDet]){
      printf("AliDetectorRecoParam objects for detector %d:\n",iDet); 
      Int_t nparam = fDetRecoParams[iDet]->GetEntriesFast();
      for (Int_t iparam=0; iparam<nparam; iparam++){
	AliDetectorRecoParam * param = (AliDetectorRecoParam *)fDetRecoParams[iDet]->At(iparam);
	if (!param) continue;
	param->Print(option);
      }
    }
    else {
      printf("No AliDetectorRecoParam objects specified for detector %d\n",iDet); 
    }
  }
}

void AliRecoParam::SetEventSpecie(const AliRunInfo *runInfo, const AliEventInfo &evInfo,
	const THashTable *cosmicTriggersList)
{
    // Implemented according to the discussions
    // and meetings with physics and trigger coordination

    fEventSpecie = kDefault;

    if (strcmp(runInfo->GetRunType(),"PHYSICS")) {
	// Not a physics run, the event specie is set to kCalib
	fEventSpecie = kCalib;
	return;
    }

    // Special DAQ events considered as calibration events
    if (evInfo.GetEventType() != 7) {
	// START_OF_*, END_OF_*, CALIBRATION etc events
	fEventSpecie = kCalib;
	return;
    }

    TString lhcState(runInfo->GetLHCState());
    TString beamType(runInfo->GetBeamType());
    TRegexp reStable("^STABLE[_ ]BEAMS$");
    TRegexp reASthg("^A-");
    TRegexp reSthgA(".*-A$");
    TRegexp repSthg("^[pP]-.*");
    TRegexp reSthgp(".*-[pP]$");

    if(lhcState.Index(reStable)==0){
        if(beamType.Index(repSthg)==0 || beamType.Index(reSthgp)==0){
            // Proton run, the event specie is set to kLowMult
            fEventSpecie = kLowMult;
        }else if(beamType.Index(reASthg)==0 || beamType.Index(reSthgA)==0){
            // Heavy ion run (any beam that is not pp, the event specie is set to kHighMult
            fEventSpecie = kHighMult;
	}
    }
    if(beamType==TString("-")){
	// No beams, we assume cosmic data
	fEventSpecie = kCosmic;
    }

    // Now we look into the trigger type in order to decide
    // on the remaining cases (cosmic event within LHC run,
    // calibration, for example TPC laser, triggers within physics run
    TString triggerClasses = evInfo.GetTriggerClasses();
    TObjArray* trClassArray = triggerClasses.Tokenize(" ");
    Int_t nTrClasses = trClassArray->GetEntriesFast();
    Bool_t cosmicTrigger = kFALSE,
	   calibTrigger = kFALSE,
	   otherTrigger = kFALSE;
    for( Int_t i=0; i<nTrClasses; ++i ) {
	TString trClass = ((TObjString*)trClassArray->At(i))->String();

	if (trClass.BeginsWith("C0L")) {
	    // Calibration triggers always start with C0L
	    calibTrigger = kTRUE;
	    continue;
	}

	if (cosmicTriggersList) {
	    if (cosmicTriggersList->FindObject(trClass.Data())) {
		// Cosmic trigger accorind to the table
		// provided in OCDB
		cosmicTrigger = kTRUE;
		AliDebug(1,Form("Trigger %s identified as cosmic according to the list defined in OCDB.",
			    trClass.Data()));
		continue;
	    }
	}
	else {
	    AliDebug(1,"Cosmic trigger list is not provided, cosmic event specie is effectively disabled!");
	}

	otherTrigger = kTRUE;
    }
    delete trClassArray;

    if (calibTrigger) {
	fEventSpecie = kCalib;
	return;
    }
    if (cosmicTrigger && !otherTrigger) {
	fEventSpecie = kCosmic;
	return;
    }

    // Here we have to add if we have other cases
    // and also HLT info if any...
}

const AliDetectorRecoParam *AliRecoParam::GetDetRecoParam(Int_t iDet) const
{
  // Return AliDetectorRecoParam object for a given detector
  // according to the event specie provided as an argument
  if ( iDet >= kNDetectors) return NULL;
  if (!fDetRecoParams[iDet]) return NULL;
  if (fDetRecoParams[iDet]->GetEntries() == 0) return NULL;

  for(Int_t iBit = 0; iBit < kNSpecies; iBit++) {
    if (fEventSpecie & (1 << iBit)) {
      if (fDetRecoParamsIndex[iBit][iDet] >= 0)
	return (AliDetectorRecoParam *)fDetRecoParams[iDet]->At(fDetRecoParamsIndex[iBit][iDet]);
      else if (fDetRecoParamsIndex[0][iDet] >= 0)
	return (AliDetectorRecoParam *)fDetRecoParams[iDet]->At(fDetRecoParamsIndex[0][iDet]);
      else {
	AliError(Form("no RecoParam set for detector %d", iDet));
	return NULL;
      }
    }
  }

  // Default one
  AliError(Form("Invalid event specie: %d!",fEventSpecie));
  if (fDetRecoParamsIndex[0][iDet] >= 0)
    return (AliDetectorRecoParam *)fDetRecoParams[iDet]->At(fDetRecoParamsIndex[0][iDet]);

  AliError(Form("no RecoParam set for detector %d", iDet));
  return NULL;
}

void  AliRecoParam::AddDetRecoParam(Int_t iDet, AliDetectorRecoParam* param)
{
  // Add an instance of reco params object into
  // the fDetRecoParams for detector iDet
  // Updates the fDetRecoParams index
  if (!fDetRecoParams[iDet]) fDetRecoParams[iDet] = new TObjArray;
  fDetRecoParams[iDet]->AddLast(param);
  Int_t index = fDetRecoParams[iDet]->GetLast();

  // Index
  Int_t specie = param->GetEventSpecie();
  for(Int_t iBit = 0; iBit < kNSpecies; iBit++) {
    if (specie & (1 << iBit)) {
      fDetRecoParamsIndex[iBit][iDet] = index;
    }
  }
}

Bool_t AliRecoParam::AddDetRecoParamArray(Int_t iDet, TObjArray* parArray)
{
  // Add an array of reconstruction parameter objects
  // for a given detector
  // Basic check on the consistency of the array
  Bool_t defaultFound = kFALSE;
  if (!parArray) return defaultFound;
  for(Int_t i = 0; i < parArray->GetEntriesFast(); i++) {
    AliDetectorRecoParam *par = (AliDetectorRecoParam*)parArray->At(i);
    if (!par) continue;
    if (par->IsDefault()) defaultFound = kTRUE;

    Int_t specie = par->GetEventSpecie();
    for(Int_t iBit = 0; iBit < kNSpecies; iBit++) {
      if (specie & (1 << iBit)) {
	fDetRecoParamsIndex[iBit][iDet] = i;
      }
    }
 }
   
  fDetRecoParams[iDet] = parArray;

  return defaultFound;
}

const char*  AliRecoParam::PrintEventSpecie() const
{
  // Print the current
  // event specie
  switch (fEventSpecie) {
  case kDefault:
    return fkgEventSpecieName[0].Data() ;
    break;
  case kLowMult:
    return fkgEventSpecieName[1].Data() ;
    break;
  case kHighMult:
    return fkgEventSpecieName[2].Data() ;
    break;
  case kCosmic:
    return fkgEventSpecieName[3].Data() ;
    break;
  case kCalib:
    return fkgEventSpecieName[4].Data() ;
    break;
  default:
    return fkgEventSpecieName[5].Data() ;
    break;
  }
}

const char * AliRecoParam::GetEventSpecieName(EventSpecie_t es)
{
  switch (es) {
    case kDefault:
      return fkgEventSpecieName[0].Data() ;
      break;
    case kLowMult:
      return fkgEventSpecieName[1].Data() ;
      break;
    case kHighMult:
      return fkgEventSpecieName[2].Data() ;
      break;
    case kCosmic:
      return fkgEventSpecieName[3].Data() ;
      break;
    case kCalib:
      return fkgEventSpecieName[4].Data() ;
      break;
    default:
      return fkgEventSpecieName[5].Data() ;
      break;
  }
}

const char * AliRecoParam::GetEventSpecieName(Int_t esIndex)
{
  if ( esIndex >= 0 && esIndex < kNSpecies) 
    return fkgEventSpecieName[esIndex].Data() ;
  else 
    return fkgEventSpecieName[kNSpecies].Data() ;
}
 AliRecoParam.cxx:1
 AliRecoParam.cxx:2
 AliRecoParam.cxx:3
 AliRecoParam.cxx:4
 AliRecoParam.cxx:5
 AliRecoParam.cxx:6
 AliRecoParam.cxx:7
 AliRecoParam.cxx:8
 AliRecoParam.cxx:9
 AliRecoParam.cxx:10
 AliRecoParam.cxx:11
 AliRecoParam.cxx:12
 AliRecoParam.cxx:13
 AliRecoParam.cxx:14
 AliRecoParam.cxx:15
 AliRecoParam.cxx:16
 AliRecoParam.cxx:17
 AliRecoParam.cxx:18
 AliRecoParam.cxx:19
 AliRecoParam.cxx:20
 AliRecoParam.cxx:21
 AliRecoParam.cxx:22
 AliRecoParam.cxx:23
 AliRecoParam.cxx:24
 AliRecoParam.cxx:25
 AliRecoParam.cxx:26
 AliRecoParam.cxx:27
 AliRecoParam.cxx:28
 AliRecoParam.cxx:29
 AliRecoParam.cxx:30
 AliRecoParam.cxx:31
 AliRecoParam.cxx:32
 AliRecoParam.cxx:33
 AliRecoParam.cxx:34
 AliRecoParam.cxx:35
 AliRecoParam.cxx:36
 AliRecoParam.cxx:37
 AliRecoParam.cxx:38
 AliRecoParam.cxx:39
 AliRecoParam.cxx:40
 AliRecoParam.cxx:41
 AliRecoParam.cxx:42
 AliRecoParam.cxx:43
 AliRecoParam.cxx:44
 AliRecoParam.cxx:45
 AliRecoParam.cxx:46
 AliRecoParam.cxx:47
 AliRecoParam.cxx:48
 AliRecoParam.cxx:49
 AliRecoParam.cxx:50
 AliRecoParam.cxx:51
 AliRecoParam.cxx:52
 AliRecoParam.cxx:53
 AliRecoParam.cxx:54
 AliRecoParam.cxx:55
 AliRecoParam.cxx:56
 AliRecoParam.cxx:57
 AliRecoParam.cxx:58
 AliRecoParam.cxx:59
 AliRecoParam.cxx:60
 AliRecoParam.cxx:61
 AliRecoParam.cxx:62
 AliRecoParam.cxx:63
 AliRecoParam.cxx:64
 AliRecoParam.cxx:65
 AliRecoParam.cxx:66
 AliRecoParam.cxx:67
 AliRecoParam.cxx:68
 AliRecoParam.cxx:69
 AliRecoParam.cxx:70
 AliRecoParam.cxx:71
 AliRecoParam.cxx:72
 AliRecoParam.cxx:73
 AliRecoParam.cxx:74
 AliRecoParam.cxx:75
 AliRecoParam.cxx:76
 AliRecoParam.cxx:77
 AliRecoParam.cxx:78
 AliRecoParam.cxx:79
 AliRecoParam.cxx:80
 AliRecoParam.cxx:81
 AliRecoParam.cxx:82
 AliRecoParam.cxx:83
 AliRecoParam.cxx:84
 AliRecoParam.cxx:85
 AliRecoParam.cxx:86
 AliRecoParam.cxx:87
 AliRecoParam.cxx:88
 AliRecoParam.cxx:89
 AliRecoParam.cxx:90
 AliRecoParam.cxx:91
 AliRecoParam.cxx:92
 AliRecoParam.cxx:93
 AliRecoParam.cxx:94
 AliRecoParam.cxx:95
 AliRecoParam.cxx:96
 AliRecoParam.cxx:97
 AliRecoParam.cxx:98
 AliRecoParam.cxx:99
 AliRecoParam.cxx:100
 AliRecoParam.cxx:101
 AliRecoParam.cxx:102
 AliRecoParam.cxx:103
 AliRecoParam.cxx:104
 AliRecoParam.cxx:105
 AliRecoParam.cxx:106
 AliRecoParam.cxx:107
 AliRecoParam.cxx:108
 AliRecoParam.cxx:109
 AliRecoParam.cxx:110
 AliRecoParam.cxx:111
 AliRecoParam.cxx:112
 AliRecoParam.cxx:113
 AliRecoParam.cxx:114
 AliRecoParam.cxx:115
 AliRecoParam.cxx:116
 AliRecoParam.cxx:117
 AliRecoParam.cxx:118
 AliRecoParam.cxx:119
 AliRecoParam.cxx:120
 AliRecoParam.cxx:121
 AliRecoParam.cxx:122
 AliRecoParam.cxx:123
 AliRecoParam.cxx:124
 AliRecoParam.cxx:125
 AliRecoParam.cxx:126
 AliRecoParam.cxx:127
 AliRecoParam.cxx:128
 AliRecoParam.cxx:129
 AliRecoParam.cxx:130
 AliRecoParam.cxx:131
 AliRecoParam.cxx:132
 AliRecoParam.cxx:133
 AliRecoParam.cxx:134
 AliRecoParam.cxx:135
 AliRecoParam.cxx:136
 AliRecoParam.cxx:137
 AliRecoParam.cxx:138
 AliRecoParam.cxx:139
 AliRecoParam.cxx:140
 AliRecoParam.cxx:141
 AliRecoParam.cxx:142
 AliRecoParam.cxx:143
 AliRecoParam.cxx:144
 AliRecoParam.cxx:145
 AliRecoParam.cxx:146
 AliRecoParam.cxx:147
 AliRecoParam.cxx:148
 AliRecoParam.cxx:149
 AliRecoParam.cxx:150
 AliRecoParam.cxx:151
 AliRecoParam.cxx:152
 AliRecoParam.cxx:153
 AliRecoParam.cxx:154
 AliRecoParam.cxx:155
 AliRecoParam.cxx:156
 AliRecoParam.cxx:157
 AliRecoParam.cxx:158
 AliRecoParam.cxx:159
 AliRecoParam.cxx:160
 AliRecoParam.cxx:161
 AliRecoParam.cxx:162
 AliRecoParam.cxx:163
 AliRecoParam.cxx:164
 AliRecoParam.cxx:165
 AliRecoParam.cxx:166
 AliRecoParam.cxx:167
 AliRecoParam.cxx:168
 AliRecoParam.cxx:169
 AliRecoParam.cxx:170
 AliRecoParam.cxx:171
 AliRecoParam.cxx:172
 AliRecoParam.cxx:173
 AliRecoParam.cxx:174
 AliRecoParam.cxx:175
 AliRecoParam.cxx:176
 AliRecoParam.cxx:177
 AliRecoParam.cxx:178
 AliRecoParam.cxx:179
 AliRecoParam.cxx:180
 AliRecoParam.cxx:181
 AliRecoParam.cxx:182
 AliRecoParam.cxx:183
 AliRecoParam.cxx:184
 AliRecoParam.cxx:185
 AliRecoParam.cxx:186
 AliRecoParam.cxx:187
 AliRecoParam.cxx:188
 AliRecoParam.cxx:189
 AliRecoParam.cxx:190
 AliRecoParam.cxx:191
 AliRecoParam.cxx:192
 AliRecoParam.cxx:193
 AliRecoParam.cxx:194
 AliRecoParam.cxx:195
 AliRecoParam.cxx:196
 AliRecoParam.cxx:197
 AliRecoParam.cxx:198
 AliRecoParam.cxx:199
 AliRecoParam.cxx:200
 AliRecoParam.cxx:201
 AliRecoParam.cxx:202
 AliRecoParam.cxx:203
 AliRecoParam.cxx:204
 AliRecoParam.cxx:205
 AliRecoParam.cxx:206
 AliRecoParam.cxx:207
 AliRecoParam.cxx:208
 AliRecoParam.cxx:209
 AliRecoParam.cxx:210
 AliRecoParam.cxx:211
 AliRecoParam.cxx:212
 AliRecoParam.cxx:213
 AliRecoParam.cxx:214
 AliRecoParam.cxx:215
 AliRecoParam.cxx:216
 AliRecoParam.cxx:217
 AliRecoParam.cxx:218
 AliRecoParam.cxx:219
 AliRecoParam.cxx:220
 AliRecoParam.cxx:221
 AliRecoParam.cxx:222
 AliRecoParam.cxx:223
 AliRecoParam.cxx:224
 AliRecoParam.cxx:225
 AliRecoParam.cxx:226
 AliRecoParam.cxx:227
 AliRecoParam.cxx:228
 AliRecoParam.cxx:229
 AliRecoParam.cxx:230
 AliRecoParam.cxx:231
 AliRecoParam.cxx:232
 AliRecoParam.cxx:233
 AliRecoParam.cxx:234
 AliRecoParam.cxx:235
 AliRecoParam.cxx:236
 AliRecoParam.cxx:237
 AliRecoParam.cxx:238
 AliRecoParam.cxx:239
 AliRecoParam.cxx:240
 AliRecoParam.cxx:241
 AliRecoParam.cxx:242
 AliRecoParam.cxx:243
 AliRecoParam.cxx:244
 AliRecoParam.cxx:245
 AliRecoParam.cxx:246
 AliRecoParam.cxx:247
 AliRecoParam.cxx:248
 AliRecoParam.cxx:249
 AliRecoParam.cxx:250
 AliRecoParam.cxx:251
 AliRecoParam.cxx:252
 AliRecoParam.cxx:253
 AliRecoParam.cxx:254
 AliRecoParam.cxx:255
 AliRecoParam.cxx:256
 AliRecoParam.cxx:257
 AliRecoParam.cxx:258
 AliRecoParam.cxx:259
 AliRecoParam.cxx:260
 AliRecoParam.cxx:261
 AliRecoParam.cxx:262
 AliRecoParam.cxx:263
 AliRecoParam.cxx:264
 AliRecoParam.cxx:265
 AliRecoParam.cxx:266
 AliRecoParam.cxx:267
 AliRecoParam.cxx:268
 AliRecoParam.cxx:269
 AliRecoParam.cxx:270
 AliRecoParam.cxx:271
 AliRecoParam.cxx:272
 AliRecoParam.cxx:273
 AliRecoParam.cxx:274
 AliRecoParam.cxx:275
 AliRecoParam.cxx:276
 AliRecoParam.cxx:277
 AliRecoParam.cxx:278
 AliRecoParam.cxx:279
 AliRecoParam.cxx:280
 AliRecoParam.cxx:281
 AliRecoParam.cxx:282
 AliRecoParam.cxx:283
 AliRecoParam.cxx:284
 AliRecoParam.cxx:285
 AliRecoParam.cxx:286
 AliRecoParam.cxx:287
 AliRecoParam.cxx:288
 AliRecoParam.cxx:289
 AliRecoParam.cxx:290
 AliRecoParam.cxx:291
 AliRecoParam.cxx:292
 AliRecoParam.cxx:293
 AliRecoParam.cxx:294
 AliRecoParam.cxx:295
 AliRecoParam.cxx:296
 AliRecoParam.cxx:297
 AliRecoParam.cxx:298
 AliRecoParam.cxx:299
 AliRecoParam.cxx:300
 AliRecoParam.cxx:301
 AliRecoParam.cxx:302
 AliRecoParam.cxx:303
 AliRecoParam.cxx:304
 AliRecoParam.cxx:305
 AliRecoParam.cxx:306
 AliRecoParam.cxx:307
 AliRecoParam.cxx:308
 AliRecoParam.cxx:309
 AliRecoParam.cxx:310
 AliRecoParam.cxx:311
 AliRecoParam.cxx:312
 AliRecoParam.cxx:313
 AliRecoParam.cxx:314
 AliRecoParam.cxx:315
 AliRecoParam.cxx:316
 AliRecoParam.cxx:317
 AliRecoParam.cxx:318
 AliRecoParam.cxx:319
 AliRecoParam.cxx:320
 AliRecoParam.cxx:321
 AliRecoParam.cxx:322
 AliRecoParam.cxx:323
 AliRecoParam.cxx:324
 AliRecoParam.cxx:325
 AliRecoParam.cxx:326
 AliRecoParam.cxx:327
 AliRecoParam.cxx:328
 AliRecoParam.cxx:329
 AliRecoParam.cxx:330
 AliRecoParam.cxx:331
 AliRecoParam.cxx:332
 AliRecoParam.cxx:333
 AliRecoParam.cxx:334
 AliRecoParam.cxx:335
 AliRecoParam.cxx:336
 AliRecoParam.cxx:337
 AliRecoParam.cxx:338
 AliRecoParam.cxx:339
 AliRecoParam.cxx:340
 AliRecoParam.cxx:341
 AliRecoParam.cxx:342
 AliRecoParam.cxx:343
 AliRecoParam.cxx:344
 AliRecoParam.cxx:345
 AliRecoParam.cxx:346
 AliRecoParam.cxx:347
 AliRecoParam.cxx:348
 AliRecoParam.cxx:349
 AliRecoParam.cxx:350
 AliRecoParam.cxx:351
 AliRecoParam.cxx:352
 AliRecoParam.cxx:353
 AliRecoParam.cxx:354
 AliRecoParam.cxx:355
 AliRecoParam.cxx:356
 AliRecoParam.cxx:357
 AliRecoParam.cxx:358
 AliRecoParam.cxx:359
 AliRecoParam.cxx:360
 AliRecoParam.cxx:361
 AliRecoParam.cxx:362
 AliRecoParam.cxx:363
 AliRecoParam.cxx:364
 AliRecoParam.cxx:365
 AliRecoParam.cxx:366
 AliRecoParam.cxx:367
 AliRecoParam.cxx:368
 AliRecoParam.cxx:369
 AliRecoParam.cxx:370
 AliRecoParam.cxx:371
 AliRecoParam.cxx:372
 AliRecoParam.cxx:373
 AliRecoParam.cxx:374
 AliRecoParam.cxx:375
 AliRecoParam.cxx:376
 AliRecoParam.cxx:377
 AliRecoParam.cxx:378
 AliRecoParam.cxx:379
 AliRecoParam.cxx:380
 AliRecoParam.cxx:381
 AliRecoParam.cxx:382
 AliRecoParam.cxx:383
 AliRecoParam.cxx:384
 AliRecoParam.cxx:385
 AliRecoParam.cxx:386
 AliRecoParam.cxx:387
 AliRecoParam.cxx:388
 AliRecoParam.cxx:389
 AliRecoParam.cxx:390
 AliRecoParam.cxx:391
 AliRecoParam.cxx:392
 AliRecoParam.cxx:393
 AliRecoParam.cxx:394
 AliRecoParam.cxx:395
 AliRecoParam.cxx:396
 AliRecoParam.cxx:397
 AliRecoParam.cxx:398
 AliRecoParam.cxx:399
 AliRecoParam.cxx:400
 AliRecoParam.cxx:401
 AliRecoParam.cxx:402
 AliRecoParam.cxx:403
 AliRecoParam.cxx:404
 AliRecoParam.cxx:405
 AliRecoParam.cxx:406
 AliRecoParam.cxx:407
 AliRecoParam.cxx:408
 AliRecoParam.cxx:409
 AliRecoParam.cxx:410
 AliRecoParam.cxx:411
 AliRecoParam.cxx:412
 AliRecoParam.cxx:413
 AliRecoParam.cxx:414
 AliRecoParam.cxx:415
 AliRecoParam.cxx:416