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

//_________________________________________________________________________
// Class for reading data (ESDs) in order to do prompt gamma 
// or other particle identification and correlations
//
//
//
//
//*-- Author: Gustavo Conesa (LNF-INFN) 
//////////////////////////////////////////////////////////////////////////////


//---- ANALYSIS system ----
#include "AliCaloTrackESDReader.h" 
#include "AliAODEvent.h"
#include "AliMultiEventInputHandler.h"
#include "AliAnalysisManager.h"
#include "AliMixedEvent.h"
#include "AliESDEvent.h"
#include "AliESDtrackCuts.h"
#include "AliLog.h"

ClassImp(AliCaloTrackESDReader)

//______________________________________________
AliCaloTrackESDReader::AliCaloTrackESDReader() : 
AliCaloTrackReader(), fConstrainTrack(0),
fESDtrackCuts(0), fESDtrackComplementaryCuts(0)
{
  //Default Ctor
  
  //Initialize parameters
  fDataType           = kESD;
  fReadStack          = kTRUE;
  fReadAODMCParticles = kFALSE;
  fConstrainTrack     = kFALSE ; // constrain tracks to vertex

}

//_____________________________________________
AliCaloTrackESDReader::~AliCaloTrackESDReader()
{
  //Dtor
  
  //AliCaloTrackReader::~AliCaloTrackReader();
  AliCaloTrackReader::DeletePointers();
  
  delete fESDtrackCuts;
  delete fESDtrackComplementaryCuts;
}

//_________________________________________________________
Bool_t AliCaloTrackESDReader::CheckForPrimaryVertex() const
{
  //Check if the vertex was well reconstructed, copy of conversion group
  
  AliESDEvent * esdevent = dynamic_cast<AliESDEvent*> (fInputEvent);
  if(!esdevent) return kFALSE;
  
  if(esdevent->GetPrimaryVertex()->GetNContributors() > 0)
  {
    return kTRUE;
  }
  
  if(esdevent->GetPrimaryVertex()->GetNContributors() < 1)
  {
    // SPD vertex
    if(esdevent->GetPrimaryVertexSPD()->GetNContributors() > 0)
    {
      return kTRUE;
      
    }
    if(esdevent->GetPrimaryVertexSPD()->GetNContributors() < 1)
    {
      return kFALSE;
    }
  }

  return kFALSE;

}

//________________________________
void AliCaloTrackESDReader::Init()
{
  //Init reader. Method to be called in AliAnaCaloTrackCorrMaker
  
  AliCaloTrackReader::Init();
  
  if(!fESDtrackCuts)
    fESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); //initialize with TPC only tracks
}

//______________________________________________________________________________
Bool_t AliCaloTrackESDReader::SelectTrack(AliVTrack* track, Double_t pTrack[3])
{
  // Select ESD track using the cuts declared in fESDtrackCuts
  // in case of hybrid tracks, 2 different sets of cuts defined.
  
  AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*> (track);
  
  if(!esdTrack) return kFALSE;
  
  const AliExternalTrackParam* constrainParam = esdTrack->GetConstrainedParam();
  
  if(fESDtrackCuts->AcceptTrack(esdTrack))
  {
    track->GetPxPyPz(pTrack) ;
    
    if(fConstrainTrack)
    {
      if( !constrainParam ) return kFALSE;
      
      esdTrack->Set(constrainParam->GetX(),constrainParam->GetAlpha(),constrainParam->GetParameter(),constrainParam->GetCovariance());
      esdTrack->GetConstrainedPxPyPz(pTrack);
      
    } // use constrained tracks
    
    if(fSelectSPDHitTracks && !esdTrack->HasPointOnITSLayer(0) && !esdTrack->HasPointOnITSLayer(1))
      return kFALSE ; // Not much sense to use with TPC only or Hybrid tracks
  }
  
  // Complementary track to global : Hybrids (make sure that the previous selection is for Global)
  else if(fESDtrackComplementaryCuts && fESDtrackComplementaryCuts->AcceptTrack(esdTrack))
  {
    // constrain the track
    if( !constrainParam ) return kFALSE;
    
    esdTrack->Set(constrainParam->GetX(),constrainParam->GetAlpha(),constrainParam->GetParameter(),constrainParam->GetCovariance());
    esdTrack->GetConstrainedPxPyPz(pTrack);
    
  }
  else return kFALSE;
  
  return kTRUE;
}

//_______________________________________________________________
void  AliCaloTrackESDReader::SetTrackCuts(AliESDtrackCuts * cuts)
{
  // Set Track cuts
  
  if(fESDtrackCuts) delete fESDtrackCuts ;
  
  fESDtrackCuts = cuts ;
  
}

//____________________________________________________________________________
void  AliCaloTrackESDReader::SetTrackComplementaryCuts(AliESDtrackCuts * cuts)
{
  // Set Track cuts for complementary tracks (hybrids)
  
  if(fESDtrackComplementaryCuts) delete fESDtrackComplementaryCuts ;
  
  fESDtrackComplementaryCuts = cuts ;
  
}

//_________________________________________________________________
void AliCaloTrackESDReader::SetInputOutputMCEvent(AliVEvent* esd,
                                                  AliAODEvent* aod,
                                                  AliMCEvent* mc) 
{
  // Connect the data pointers
  
  Bool_t tesd = kFALSE ; 
  
  if ( strcmp(esd->GetName(), "AliMixedEvent") == 0 ) 
  {
    AliMultiEventInputHandler* multiEH = dynamic_cast<AliMultiEventInputHandler*>((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
    if(multiEH)
    {
      if (multiEH->GetFormat() == 0 ) 
      {
        tesd = kTRUE ; 
      }
    }
    else
    {
      AliFatal("MultiEventHandler is NULL");
      return;
    }
  }
  if (strcmp(esd->GetName(),"AliESDEvent") == 0)
  {
    tesd = kTRUE ; 
  }
  
  if(!tesd)
  {
    AliFatal(Form("STOP ::Wrong reader, here only ESDs. Input name: %s != AliESDEvent",esd->GetName()));
  }
  
  SetInputEvent(esd);
  SetOutputEvent(aod);
  SetMC(mc);
  
}



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