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.                  *
 **************************************************************************/

/* $Id$ */

//--------------------------------------------------
// Filling of CalTrkTrack objects in the reader task
//
// Author: magali.estienne@subatech.in2p3.fr
//         alexandre.shabetai@cern.ch
//-------------------------------------------------

// --- AliRoot header files ---
#include "AliJetFillCalTrkTrack.h"
#include "AliJetReaderHeader.h"
#include "AliVEvent.h"
#include "AliESDtrack.h"
#include "AliAODTrack.h"

using std::cout;
using std::endl;
ClassImp(AliJetFillCalTrkTrack)

/////////////////////////////////////////////////////////////////////

AliJetFillCalTrkTrack::AliJetFillCalTrkTrack(): 
  AliJetFillCalTrkEvent(),
  fHadCorr(0),
  fApplyMIPCorrection(kTRUE),
  fVEvt(0x0)
{
  // constructor
}

//-----------------------------------------------------------------------
AliJetFillCalTrkTrack::AliJetFillCalTrkTrack(AliVEvent* evt): 
  AliJetFillCalTrkEvent(),
  fHadCorr(0),
  fApplyMIPCorrection(kTRUE),
  fVEvt(evt)
{
  // constructor
}

//-----------------------------------------------------------------------
AliJetFillCalTrkTrack::AliJetFillCalTrkTrack(const AliJetFillCalTrkTrack &det): 
  AliJetFillCalTrkEvent(det),
  fHadCorr(det.fHadCorr),
  fApplyMIPCorrection(det.fApplyMIPCorrection),
  fVEvt(det.fVEvt)
{
  // Copy constructor
}

//-----------------------------------------------------------------------
AliJetFillCalTrkTrack& AliJetFillCalTrkTrack::operator=(const AliJetFillCalTrkTrack& other)
{
  // Assignment
  if (this != &other) {
   fHadCorr = other.fHadCorr;
   fApplyMIPCorrection = other.fApplyMIPCorrection;
   fVEvt = other.fVEvt;
 }

  return (*this);

}

//-----------------------------------------------------------------------
AliJetFillCalTrkTrack::~AliJetFillCalTrkTrack()
{
  // destructor
}

//-----------------------------------------------------------------------
void AliJetFillCalTrkTrack::Exec(Option_t const * /*option*/)
{
  // Main method.
  // Fill AliJetFillCalTrkTrack the with the charged particle information

  fDebug = fReaderHeader->GetDebug();
  fOpt = fReaderHeader->GetDetector();
  TString datatype = fReaderHeader->GetDataType();
  datatype.ToUpper();

  Int_t type=0; 

  if      (datatype.Contains("AODEXTRAONLY")) { type=kTrackAODextraonly;} 
  else if (datatype.Contains("AODEXTRA")) { type=kTrackAODextra; }
  else if (datatype.Contains("AOD")) { type=kTrackAOD; }
  else if (datatype.Contains("ESD")) { type=kTrackESD; }
  else { cout<< "Unknown Data type !" << endl; }

  // temporary storage of signal and pt cut flag
  Bool_t sflag = 0;
  Bool_t cflag = 0;

  // get cuts set by user
  Float_t ptMin  = fReaderHeader->GetPtCut();
  Float_t etaMin = fReaderHeader->GetFiducialEtaMin();
  Float_t etaMax = fReaderHeader->GetFiducialEtaMax();
  Float_t phiMin = fReaderHeader->GetFiducialPhiMin();
  Float_t phiMax = fReaderHeader->GetFiducialPhiMax();
  UInt_t filterMask = ((AliJetReaderHeader*)fReaderHeader)->GetTestFilterMask();
  UInt_t filterType = ((AliJetReaderHeader*)fReaderHeader)->GetFilterType();

  if(fDebug>2)Printf("%s:%d Selecting tracks with %d",(char*)__FILE__,__LINE__,type);

  Int_t goodTrackStd = 0;
  Int_t goodTrackNonStd = 0;
  if(type==kTrackESD || type==kTrackAOD || type==kTrackAODextra || type==kTrackAODextraonly){
    if(type!=kTrackAODextraonly) {
      if(!fVEvt){
        if(fDebug>2)Printf("%s:%d No AOD or ESD input event",(char*)__FILE__,__LINE__);
        return;
      }
      for(int it = 0;it < fVEvt->GetNumberOfTracks();++it){
        AliVTrack *tr = (AliVTrack*)fVEvt->GetTrack(it);
        cflag=sflag=0;
        if(fVEvt->InheritsFrom("AliESDEvent")){ 
          // ESD case ....
          if(tr->GetStatus()==0){ 
            if(fDebug>10)Printf("%s:%d Not matching status %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());
            continue;
          }
          if ((tr->GetStatus() & AliESDtrack::kTPCrefit) == 0)    continue;      // quality check
          if ((tr->GetStatus() & AliESDtrack::kITSrefit) == 0)    continue;      // quality check
          if (((AliJetReaderHeader*) fReaderHeader)->ReadSignalOnly() 
	      && TMath::Abs(tr->GetLabel()) > 10000)  continue;      // quality check
          if (((AliJetReaderHeader*) fReaderHeader)->ReadBkgdOnly() 
	      && TMath::Abs(tr->GetLabel()) < 10000)  continue;      // quality check
        }
        if((fVEvt->InheritsFrom("AliAODEvent"))){
          // AOD case ....
          AliAODTrack *trAOD = dynamic_cast<AliAODTrack*> (tr);
          if(!trAOD) continue;
       	  Bool_t bGood = false;
	  if(filterType == 0)bGood = true;
	  else if(filterType == 1)bGood = trAOD->IsHybridTPCConstrainedGlobal();
	  else if(filterType == 2)bGood = trAOD->IsHybridGlobalConstrainedGlobal();
          if((filterMask>0)&&((!trAOD->TestFilterBit(filterMask)||(!bGood)))){
	    if(fDebug>10)Printf("%s:%d Not matching filter %d/%d %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks(),filterMask,trAOD->GetFilterMap());
	    continue;
	  }
          // Should we also check the GetStatus ?
        }
        if((tr->Eta()> etaMax) || (tr->Eta() < etaMin)){
          if(fDebug>10)Printf("%s:%d Not matching eta %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());
          continue;
        }
        Float_t phi = ( (tr->Phi()) < 0) ? (tr->Phi()) + 2. * TMath::Pi() : (tr->Phi());
        if((phi > phiMax) || (phi < phiMin)){
          if(fDebug>10)Printf("%s:%d Not matching eta %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());
          continue;
        }
        if(tr->Pt() <= ptMin){
          if(fDebug>10)Printf("%s:%d Not matching pt %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());
        }
        else {cflag=1;}
        sflag=(TMath::Abs(tr->GetLabel()) < 10000) ? 1 : 0;

        if(fDebug>10)Printf("%s:%d MATCHED %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());

        fCalTrkEvent->AddCalTrkTrack(tr,cflag,sflag); 
        goodTrackStd++;
      }
    }
    if(type==kTrackAODextra || type==kTrackAODextraonly) {
      if(!fVEvt){
        return;   
      }
      TClonesArray *aodExtraTracks = dynamic_cast<TClonesArray*>(fVEvt->FindListObject("aodExtraTracks"));
      if(!aodExtraTracks) return; 
      for(int it =0; it<aodExtraTracks->GetEntries(); it++) {
        cflag=sflag=0;
        AliVParticle *track = dynamic_cast<AliVParticle*> ((*aodExtraTracks)[it]);
        if (!track) continue; 
        AliAODTrack *trackAOD = dynamic_cast<AliAODTrack*> (track);
        if(!trackAOD) continue;
        if (trackAOD->GetStatus() == 0) continue; 
	Bool_t bGood = false;
	if(filterType == 0)bGood = true;
	else if(filterType == 1)bGood = trackAOD->IsHybridTPCConstrainedGlobal();
	else if(filterType == 2)bGood = trackAOD->IsHybridGlobalConstrainedGlobal();
        if((filterMask>0)&&((!trackAOD->TestFilterBit(filterMask)||(!bGood))))continue;
        if((trackAOD->Eta()> etaMax) || (trackAOD->Eta() < etaMin)){
          if(fDebug>10)Printf("%s:%d Not matching eta %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());
          continue;
        }
        Float_t phi = ( (trackAOD->Phi()) < 0) ? (trackAOD->Phi()) + 2. * TMath::Pi() : (trackAOD->Phi());
        if((phi > phiMax) || (phi < phiMin)){
          if(fDebug>10)Printf("%s:%d Not matching eta %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());
          continue;
        }
        if(trackAOD->Pt() <= ptMin){
          if(fDebug>10)Printf("%s:%d Not matching pt %d/%d",(char*)__FILE__,__LINE__,it,fVEvt->GetNumberOfTracks());
        }
        else {cflag=1;}
        sflag=(TMath::Abs(trackAOD->GetLabel()) < 10000) ? 1 : 0; 
        fCalTrkEvent->AddCalTrkTrack(trackAOD,cflag,sflag);
        goodTrackNonStd++;
      }
    }
  }

  if(fDebug>0)printf("Number of good tracks selected: %5d \n", goodTrackStd+goodTrackNonStd);

}













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